Microsoft Visual C ++ - 编译一个没有依赖项的DLL

时间:2014-03-01 15:38:14

标签: c++ visual-studio visual-c++ dll

我获得了一个巨大的Microsoft Visual C ++ 2003项目,该项目生成一个可执行文件(.exe),项目本身依赖于几个DLL。我注意到即使代码设法编译,当它运行时它将查找它依赖的DLL(比如我的程序被称为abc,它依赖的DLL称为def.dll),即使我添加了要包含在项目设置中的路径,它会抱怨说除非我将包含def.dll的文件夹添加到%PATH%变量中,否则无法找到DLL。

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

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

谢谢!

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

1 个答案:

答案 0 :(得分:1)

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

除非作者为您提供执行此任务所需的步骤(通常需要使用-D选项定义预处理程序常量),否则您不能只获取DLL源代码并为静态库重新编译它。这些常量是什么以及需要采取的其他步骤 - DLL的作者必须告诉你这一点。

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