我正在尝试使用Windows DLL(不习惯它们)进行练习。我跟着这篇文章:
http://msdn.microsoft.com/en-us/library/ms235636(v=vs.80).aspx
致信。
但是,我收到了这个错误:
1> LINK:致命错误LNK1104:无法打开文件'.. \ debug \ math.lib'
我的项目是一个DLL项目,而不是lib。并且根本没有从我的项目创建的库(整个解决方案)。
任何人都知道出了什么问题?
答案 0 :(得分:7)
如果dll实际上没有导出任何内容,则VS不会创建导入库。要快速检查是否是您的情况,请找到您的dll,使用dependency walker打开它,看看是否有任何导出。
如果您发现导出丢失,请检查是否标记了要导出的内容:通过将类/函数声明为“__declspec(dllexport)”(当dll中包含标头时,exe包含dllimport时)或extern“C”加上模块定义(.def)文件。
答案 1 :(得分:2)
您的.dll项目可能正在创建导入.lib。这简化了使用DLL的过程。导入.lib是一个简单的库,它具有与你的dll相同的功能,但它没有实现 - 当你使用它时,它加载dll然后转发你对dll的调用。
或者,控制台项目可能认为您有导入.lib - 但您没有。
创建/使用dll的说明有点奇怪。我没有这样做(使用“添加引用”对话框)。您可能需要查看项目设置,看看是否看到对math.lib的任何引用 - 或者有关创建导入.lib的任何内容。
另外,检查.dll项目中的输出目录,看看是否创建了math.lib(或任何.lib)。
答案 2 :(得分:0)
这可能是由于您在DLL项目中为主项目添加的依赖这么简单。
在visual studio 2008中,可以在Project Dependencies
找到设置,只需取消选中DLL项目即可解决问题。
此外,您可以验证:DLL'Lib'的路径不再包含在主项目的“链接器”命令行中:Configuration Properties > Linker > Command Line