我正在使用 Visual Studio 2022、C++、x64 编写一个应用程序,并在 vcpkg 的帮助下安装了库。它们是动态链接库。
我想将我的应用程序作为静态使用,在另一台电脑上运行它,而不需要安装框架,或制作安装程序或其他依赖项,只需一个 .exe 即可。也许叫做“便携式”?
我的AI助手说我应该先更改为Release,并将代码生成选项更改为“/MT”
我这样做了,我开始尝试链接问题,当然是因为我的库被配置为动态。但是...
这正是我在这条消息中遇到的问题吗?还是我还有更多问题?我真的无法理解这条消息。
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol "__declspec(dllimport) public: class std::locale __cdecl std::basic_streambuf<char,struct std::char_traits<char> >::getloc(void)const " (__imp_?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ) WxWidgets_Structured C:\Users\Juan\source\repos\WxWidgets_Structured\ConfigManager.obj 1
Error LNK1120 1 unresolved externals WxWidgets_Structured C:\Users\Juan\source\repos\WxWidgets_Structured\x64\Release\WxWidgets_Structured.exe 1
一旦您想使用通过 DLL 获得的东西,您就无法构建静态构建的程序。句号。
可能的方法:
大多数库都是动态库或静态库:验证(两次)您使用的包是否也作为静态库提供
有许多一个文件打包程序工具。例如
py2exe
或 pyinstaller
采用 Python 解释器、一个或多个脚本和所需的库,将所有内容打包到一种 zip 存档中,以及将所有内容解压到临时文件夹中的 bootstrap,然后启动 Python 解释器及其主要脚本。您可以调整自解压 zip 文件,以便在解压包含程序和所需 DLL 的存档后立即启动您的程序。
但这实际上归结为首先构建一个安装程序,然后让安装程序立即运行代码并在使用后清理安装。你可以搜索是否可以调整 NSIS 的 InnoSetup 来获得...