在运行程序之前加载/注册DLL

时间:2012-09-11 01:41:24

标签: c++ c

我有一个存在于某个位置的DLL。我创建了另一个依赖于此DLL的应用程序。如何在运行时引用DLL?如果我将DLL保存在与exe相同的目录中,则可以正常工作。但是,这不是我的情况。我尝试使用regsvr32.exe在注册表中加载和注册库。但是当我这样做然后运行exe时,它就不会把它拿起来。

如果你能给我一些选择,那就太好了。还有为什么regsvr32.exe在这种情况下无效?

2 个答案:

答案 0 :(得分:2)

Regsvr32.exe仅适用于特定类型的DLL,即进程内COM服务器。如果它抱怨它找不到DllRegisterServer入口点那么它就不是这样的DLL。

在上个世纪,当一台机器拥有16兆字节的RAM并且整个操作系统与Windows 7的“Gone Fishing”壁纸位图一样大时,分享DLL是有意义的。这些天你走出去您阻止共享DLL的方式。所以你将逃脱可怕的DLL Hell。特别是COM服务器的问题。

但是你可以,你必须add the directory到PATH环境变量。应用程序也可以通过调用SetDllDirectory()来完成。假设它知道DLL的位置,那就不典型了。

最好的办法就是不这样做。只需复制DLL。

答案 1 :(得分:0)

可以在此处找到定位DLL的规则:

http://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.80).aspx

请注意,您可以将相关目录添加到PATH环境变量。

如果您有一个特定的位置,您的文件总是可以找到(或可以从您的应用程序中配置),您可以在通话LoadLibrary中指定路径。