2014-12-20 111 views
0

我是新的C++,我有一个dll文件,名为DiceInvaders.dll,在我的项目中,我需要使用这个库,我正在使用visual C++ 2010,我设置了该LinkerInputDiceInvaders.libDiceInvaders.dll,我也复制此DLL文件到我的,项目的目录,我一直在这行代码有错误:visual C++,LINK:致命错误LNK1104:无法打开文件

m_lib = LoadLibrary("DiceInvaders.dll"); 
assert(m_lib); 

的错误是断言失败。我应该如何解决这个问题?先谢谢你。

+0

dll可能不在正确的路径。 –

+0

Euh ... *虚拟C++ 2010 *或* visual C++ 2010 *? – Christophe

+2

不要将'DLL'作为库传递给链接器,它不能以这种方式链接。 –

回答

4

首先你不能像你一样将DLL传递给链接器,它不是链接器识别的文件类型,也不能以这种方式链接。当您创建Diceinvaters.dll文件时,链接器将创建一个具有相同文件名和扩展名.lib的导入库。看起来这已经完成了。这是在构建任何使用它的应用程序时应该传递给链接器的库文件。

其次,Diceinvaders.dll文件必须可在DLL search path访问。这取决于您使用的Windows版本略有不同,但通常类似于以下内容:

  1. 程序的加载目录。
  2. 当前工作目录。
  3. 系统目录。
  4. Windows目录。
  5. PATH环境变量中列出的目录。

将DLL放在您的项目目录是不够的。相反,您应该将其放在与该文件相关的EXE文件所在的目录中。

+0

所以我只需要把dll文件放在目录作为exe文件,在visual C++上不需要做什么? – Tom

+0

正确。只要您链接到导入库(DiceInvaders.lib)或使用'LoadLibrary'将它放在与'.exe'相同的目录中,这是唯一能够使其工作的工具。 –

+0

谢谢,我从我的老师那里得到了这个dll文件,但是没有相应的lib文件,我该如何从dll文件生成一个lib文件。 – Tom

相关问题