是否可以从给定路径的Borland C ++中使用DLL中的LoadLibrary?

时间:2016-09-16 07:07:42

标签: c# c++ dll loadlibrary borland-c++

我有一个C ++ DLL,它使用LoadLibrary函数加载C ++ CLI库,如下所示:

HMODULE myDLL = LoadLibrary("DLLtoBeLoaded.dll");

这是有效的。 但我想要我的" DLLtoBeLoaded.dll"在不同的目录中(与可执行目录不同)。所以我试过了:

HMODULE myDLL = LoadLibrary("C:\\DLLtoBeLoaded.dll");

这不起作用。虽然此后myDLL不为null,但未调用DLLtoBeLoaded.dll的构造函数。

修改

MyDLL不为null,因为LoadLibrary实际上是成功的。但它似乎不起作用的原因是DLLtoBeLoaded.dll引用了一些也不在可执行文件目录中的dll(如果我只是在可执行文件夹中复制引用的dll,程序就可以工作)。是否可以将引用的dll保存在不同的可执行文件夹中?

2 个答案:

答案 0 :(得分:0)

可以从与可执行文件不同的文件夹中引用dll。 每当运行时无法加载引用的程序集时,它就会触发Assembly Resolver事件。 我从this链接得到了基本的想法。 还有其他方法(探测和代码库)。但我最喜欢这个。

答案 1 :(得分:0)

您可以在SetDllDirectory之前使用SetCurrentDirectory或简单LoadLibrary来设置DLL目录(在示例中为C:\)。