[英]How To Build Application With Precompiled Library in Visual Studio
我正在使用我在Visual Studio 2010中編寫的預編譯庫(.lib)。我的解決方案有兩個項目。 第一個項目(C)構建庫。 第二個項目(C ++)是一個Win32控制台應用程序,用於測試庫。 我嘗試過的所有內容都無法解決鏈接器錯誤。 (我認為這很容易,因為一切都在同一個解決方案中。)任何指針都會受到贊賞。 謝謝。
這是我得到的鏈接器錯誤:
1> MyProject.obj:錯誤LNK2019:函數_wmain中引用的未解析的外部符號“void __cdecl my_function(void)”(?my_function @@ YAXXZ)
1> C:\\ Documents and Settings \\ user \\ Desktop \\ MySolution \\ Debug \\ MyProject.exe:致命錯誤LNK1120:1未解析的外部
這是Win32控制台應用程序的代碼:
#include "stdafx.h"
#include "my_api.h"
int _tmain(int argc, _TCHAR* argv[])
{
my_function();
return 0;
}
以下是在my_api.h
聲明my_function
方法:
extern VOID my_function(VOID);
您需要使用C鏈接聲明您的函數,以便鏈接器理解這些函數是在C代碼中定義的,而不是C ++代碼:
// my_api.h
#ifdef __cplusplus
extern "C" {
#endif
extern VOID my_function(VOID);
// more function declarations etc.
#ifdef __cplusplus
}
#endif
如果您只有一個功能,則可以刪除大括號:
// my_api.h
#ifdef __cplusplus
extern "C"
#endif
extern VOID my_function(VOID);
確保庫項目的輸出目錄(無論$(OutDir)
在該項目中擴展到什么$(OutDir)
位於測試項目的鏈接器搜索路徑上。 為此,請轉到項目“屬性”對話框。 在“ Linker -> General
,確保在“ Additional Library Directories
目錄”中設置了Additional Library Directories
。 此外,請確保在Linker -> Input
,庫本身( my_api.lib
)列在Additional Dependencies
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.