簡體   English   中英

如何在Visual Studio中使用預編譯庫構建應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM