2013-02-07 191 views
2

我有一個.lib靜態庫。我已將它鏈接到鏈接器設置的「其他庫目錄」和「附加依賴項」下,並使用pragma comment (lib, "mylib").。所有這些編譯都很好。在Visual Studio 2012中使用.lib(C++)

我在問什麼,我只能看到鏈接解決方案,當我看,是如何實際使用它的功能。如果我的靜態庫中引用了函數'MyFunc',我怎麼能調用它? Visual Studio目前不能識別庫中定義的任何名稱空間或函數。

謝謝!

+0

對不起怪異的格式。我不知道它爲什麼這樣做 – knoxaramav2

+0

我猜測有一個頭文件,你需要編譯的方法/類定義? –

+0

關於格式 - 如果您將文本標識爲四個空格,則會將其解析爲代碼塊。對於內聯註釋使用'字符。 –

回答

5

您需要獲取該庫的頭文件,該庫通常隨庫提供。之後,您需要將其包含在您想要使用它的函數的文件中,並使用聲明的原型來調用函數。

您的編譯器需要知道函數的原型 - 因爲它無法讀取/解析lib文件 - 這是鏈接器的工作。

+1

Doh,這就是當我看到彈出窗口時不會「加載新答案」。 :) – JerKimball

+0

嗯,好的。我從項目中獲得.h文件,並在編譯時使用release文件夾中的.lib文件。我將鏈接器設置爲釋放文件夾,使用.lib,並且使用'MyLib.h'在父目錄下的c/C++ - > general中包含'其他目錄'。現在它說[錯誤LNK1104:無法打開文件'MyLib.lib' – knoxaramav2

+0

@JerKimball,但你會失去約。 3秒查看它,這是世界上很長的時間 - 如果我每次點擊那個盒子,我仍然會有500個聲望:)。 –

2

如果我理解你的要求,你需要聲明一個原型的功能是 - 生命-IN-A-lib目錄下:

假設你的lib有:

int Foo(int bar) { ... } 

在你「消費者」,您pragma你的lib中,你需要的東西,說:

extern int Foo(int bar); 

甚至只是:

int Foo(int bar); 

通常情況下,你通過頭文件(.h文件)做到這一點,圖書館,他們通常被稱爲「包含文件」

相關問題