我正在使用Visual Studio 2008尝试创建.dll。该DLL使用外部库(.lib)。编译和链接工作正常(我在选项中包含了header / lib的路径)。当我的.dll被程序(作为插件)使用时,它会显示“externalLibrary.dll missing”,但是没有externalLibrary.dll,只有externalLibrary.lib。
是否有不同的链接选项(因此externalLibrary已经在我的.dll中)?或者我可以简单地从.lib创建.dll?或者这个问题的任何其他解决方案?
编辑(更具体): 在项目属性中,我添加了
答案 0 :(得分:1)
您使用的.lib文件是导入库,这基本上意味着它只包含函数/类/的存根,但不包含实际的存根。该实现在dll中。导入库仅对链接器有用,因为它使用它来解析符号。但是在运行时,需要实际编译的代码,因此您的application / dll会查找dll。但是,即使你的dll被用作插件,依赖于其他dll它也没有问题。所以,如果你有另一个dll,我建议你这样做。 (什么是'externalLibrary'btw?,供应商只提供导入库而不是dll,这是不正常的)
如果你真的不想使用外部dll,你必须找到'externalLibrary'代码的静态库。与导入库不同,静态库确实包含所有符号以及实际实现等。因此,在与静态库链接后,您的application / dll包含代码本身,无需在运行时解析它。