簡體   English   中英

如何使用 Visual C++ 構建 wxWidgets

[英]How to build wxWidgets with Visual C++

我遵循了在 Windows 上構建 wxWidgets 的說明 我打開了一個 VS2019 命令提示符並運行了這個構建命令,它成功完成了。

nmake /f makefile.vc BUILD=debug TARGET_CPU=X64

嘗試在另一個項目中使用它並不順利。 我復制了最小的示例程序,當它編譯時,出現了大約 330 個鏈接錯誤 (LNK2019+LNK2001)。

這些是我的項目設置:

  • 包含路徑:{wxdir}\\include, {wxdir}\\lib\\vc_x64_lib\\mswd
  • 庫路徑:{wxdir}\\lib\\vc_x64_lib
  • 鏈接器輸入(這些是創建的所有庫): wxbase31ud.lib;wxbase31ud_net.lib;wxbase31ud_xml.lib;wxexpatd.lib;wxjpegd.lib;wxmsw31ud_adv.lib;wxmsw31ud_aui.lib;wxmsw31ud_core.lib;wxmsw31ud_gl.lib;wxmsw31ud_html.lib;wxmsw31ud_media.lib;wxmsw31ud_propgrid.lib;wxmsw31ud_qa.lib;wxmsw31ud_ribbon.lib;wxmsw31ud_richtext.lib;wxmsw31ud_stc.lib;wxmsw31ud_webview.lib;wxmsw31ud_xrc.lib;wxpngd.lib;wxregexud.lib;wxscintillad.lib;wxtiffd.lib;wxzlibd.lib
  • 全局定義: WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH;

更改鏈接器輸入對錯誤根本沒有影響,即使我刪除了所有內容。 所以我想我一定錯過了設置過程中的一些關鍵部分。

以下是前 5 個鏈接錯誤,以防萬一:

error LNK2001: unresolved external symbol "protected: static struct wxEventTable const wxFrame::sm_eventTable" (?sm_eventTable@wxFrame@@1UwxEventTable@@B)

error LNK2001: unresolved external symbol "int const wxEVT_NULL" (?wxEVT_NULL@@3HB)

error LNK2001: unresolved external symbol "class wxEventTypeTag<class wxCommandEvent> const wxEVT_MENU" (?wxEVT_MENU@@3V?$wxEventTypeTag@VwxCommandEvent@@@@B)

error LNK2001: unresolved external symbol "protected: static class wxAppConsole * (__cdecl* wxAppConsoleBase::ms_appInitFn)(void)" (?ms_appInitFn@wxAppConsoleBase@@1P6APAVwxAppConsole@@XZA)

error LNK2001: unresolved external symbol "void (__cdecl* wxTheAssertHandler)(class wxString const &,int,class wxString const &,class wxString const &,class wxString const &)" (?wxTheAssertHandler@@3P6AXABVwxString@@H000@ZA)

編輯:在使用 dumpbin.exe 檢查了一些 .lib 文件后,我發現它們是 32 位的。 但是我在我的 nmake 命令中指定了“TARGET_CPU=X64”。 並且輸出 lib 文件夾被稱為“vc_x64_lib”。 是否有其他一些我不知道的指定 x64 的方法?

編輯 2:在使用“x64 Native Tools”命令提示符后,nmake 生成了 64 位庫。 這對鏈接錯誤沒有影響......

最簡單的解決方案是通過 vcpkg 安裝 wxWidgets。 我今天做到了。 然后您可以創建一個 C++ - 項目(子系統:Windows 而不是控制台)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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