gpt4 book ai didi

c++ - Microsoft Visual C++ - 编译一个没有依赖关系的 DLL

转载 作者:行者123 更新时间:2023-12-03 12:50:54 25 4
gpt4 key购买 nike

我收到了一个巨大的 Microsoft Visual C++ 2003 项目,该项目生成一个可执行文件 (.exe),其中该项目本身依赖于多个 DLL。我注意到,即使代码成功编译,当它运行时,它也会查找它所依赖的DLL(假设我的程序称为abc,它依赖的DLL称为def.dll),即使我添加路径包含在项目设置中,它会提示说找不到 DLL,除非我将包含 def.dll 的文件夹添加到 %PATH% 变量中。

因此,最终产品不是一个 exe,而是一个带有大量 DLL 的 exe。

是否可以将所有内容都编译为一个 .exe 文件,以便我可以随身携带这个可执行文件,并且它可以在我拥有的每一台 PC 上运行?该项目本身很大,所以我不打算更改每个 .h 和 .cpp 文件,但如果在 Visual C++ 中可以快速更改设置,我认为那就太好了。我知道 .exe 可能会大 10 倍,编译它可能需要几个小时,但我认为可移植性在这里相当重要。

谢谢!

PS:不确定为什么人们投票否决这篇文章...我可以不再在 StackOverflow 上提出合法问题吗?我知道这个问题对你们中的一些人来说可能听起来微不足道,但我实际上只是为了说明而简化了问题。

最佳答案

您需要将 DLL 重建为独立的(静态库)并将静态库添加到链接器设置中。但是,如果您不知道创建此类静态库的预处理器设置和可能的代码更改,我不建议您这样做。

您不能只获取 DLL 源代码并将其重新编译为静态库,除非作者为您提供完成此任务所需的步骤(通常您需要使用 -D 选项定义预处理器常量)。这些常量是什么以及需要采取哪些额外步骤——DLL 的作者必须告诉您这一点。

如果 DLL 的原始作者从未构建过静态库,那么我不建议您尝试它,除非您是一位优秀的专家程序员,熟悉必须更改的内容。在这种情况下,作者从未打算将代码用作静态库,因此要进行的更改可能会很广泛。

关于c++ - Microsoft Visual C++ - 编译一个没有依赖关系的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22116390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com