我有一个带有两个C ++项目的MSVS解决方案。项目A是链接到第三方库(tp1.lib和tp2.lib)的DLL,它由项目B(exe)引用。一切都正常编译,但是当我运行B.exe时,我得到tp1.dll缺失的错误,而我希望第三方库中的代码的相关部分应该被拉入我的A.dll。
这是我的假设吗?如果没有,我需要您知道哪些设置可能导致此行为。在其他设置中,这些是项目A在属性> ConfigurationProperties下我认为相关的那些:
然后,在A.h我有:
#include "tp1.h"
#include "tp2.h"
和A.cpp
#include "stdafx.h"
#include "A.h"
答案 0 :(得分:3)
对于 tp1.dll 和 tp2, tp1.lib 和 tp2.lib 似乎是import libraries。 DLL 。它们不包含任何实际代码,只有一些帮助程序将您对这些库所做的所有调用重定向到DLL中的正确地址。
当您链接到DLL的导入库时,DLL 不包含在生成的二进制文件中。这就是为什么生成的二进制文件在启动时需要DLL文件的原因:它在启动时搜索它,如果找不到则会崩溃。
如果要将库 tp1 和 tp2 中的所有代码添加到二进制文件中,则必须将它们重建为静态库(没有任何DLL)。然后链接 tp1.lib 和 tp2.lib 将按预期工作。