2014-02-18 116 views
0

我在Visual Studio中有一個名爲「Framework」的C項目。Visual Studio引用頭文件和源文件

框架項目應該保存應該在不同項目之間共享的通用代碼。

我也有另一個應該使用框架代碼的項目(我們稱之爲A)。

假設Framework項目有一個名爲DAL.h的頭文件,裏面有一個名爲OpenFile的函數聲明,這個函數在DAL.c中實現。

我想包括DAL.h我的一個項目,使用的OpenFile但我收到以下錯誤:無法解析的外部符號_OpenFile

我明白,編譯器未能發現的OpenFile的實施。

我的問題是這種情況下的最佳做法是什麼?

我應該「添加現有項目」並將DAL.c添加到我的A項目中嗎? (這修復了錯誤..)

我曾嘗試添加包含DAL.c的文件夾到「其他源文件夾」,但沒有幫助。

非常感謝, Michael。

回答

1

爲了使用OpenFile函數的編譯代碼,它需要存在某個地方。

你似乎有兩種選擇:

1)如果你想在編譯的代碼,你的二進制文件的一部分,您將需要包括源文件,因此它可以被編譯爲您的項目的一部分。 2)如果你不希望它被構建到你的項目中,並且從它的聲音中你不會像你說的那樣是「應該在不同項目之間共享的通用代碼」,那麼「框架項目「應該編譯成一個庫。在這種情況下,您只需要包含DAL.h頭文件,並將「Framework項目」庫導入到項目中,以便項目可以將庫中的實現與OpenFile調用鏈接起來。

+0

我想OpenFile的源代碼是我的二進制文件的一部分。我不想使用額外的庫(不想使用dll的)..我唯一的選擇包括源文件作爲項目的一部分?它是一種醜陋的解決方案..編譯器是否沒有辦法自己找到源代碼?因爲我添加了頭文件.. – Michael

+1

@MichaelEngstler:如果你想讓源代碼成爲你的項目的一部分,你將需要使源代碼成爲你的項目的一部分。源文件包含頭文件,頭文件不包含源文件。另外,有沒有一個特定的原因,你不能使用DLL,除了你不想?你的情況幾乎是他們設計的,它可能會讓你的生活變得更容易...... – parrowdice