我有一个托管c ++ / cli项目,该项目包装了一个非托管dll。
我用LoadLibrary
加载了非托管dll,但是LoadLibrary
调用找不到我的dll。
HMODULE theDllHell = LoadLibrary(L"mylib.dll");
我必须做什么,以便我的dll被复制到输出目录,并且我必须提供给LoadLibrary
的路径?
首先:假设您已将DLL添加到项目中,并且它在SolutionExplorer面板中可见,只需右键单击它,然后:
如果我没有忘记这些选项,现在应该在合理的情况下将其复制到输出目录。参考:File Properties on MSDN
第二:LoadLibrary以传统的Windows特定顺序搜索一系列路径。您可以始终确定的[[almost路径为:
编辑:当然,您只可以向LoadLibrary提供文件的CWD相对或完全绝对路径。这总是可以解决问题,但是-我不建议这样做,因为要在各种版本和OS语言上运行应用程序时,手动确定路径可能不是一件容易的事!
从中加载应用程序的目录。当前目录。系统目录。使用GetSystemDirectory函数获取此目录的路径。16位系统目录。没有获取该目录路径的函数,但会对其进行搜索。Windows目录。使用GetWindowsDirectory函数获取此目录的路径。PATH环境变量中列出的目录。
如果要将库复制到输出目录,请将此库项目添加到解决方案中。添加模块将在同一目录中。您也可以在mylib项目中使用构建后步骤将mylib.dll复制到所需的任何目录。