0

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

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

4

2 回答 2

2

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

共享 DLL 在上个世纪是有意义的,当时一台机器有 16 兆字节的 RAM,整个操作系统和 Windows 7 的“去钓鱼”壁纸位图一样大。这些天你不遗余力地防止共享 DLL。因此,您将逃离可怕的DLL 地狱。特别是 COM 服务器的问题。

但是你可以,你必须将目录添加到 PATH 环境变量中。应用程序也可以通过调用 SetDllDirectory() 来实现。假设它知道 DLL 的位置,这并不典型。

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

于 2012-09-11T02:10:28.453 回答
0

查找 DLL 的规则可在此处找到:

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

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

如果您有一个始终可以找到您的文件的特定位置(或可从您的应用程序配置),您可以在调用LoadLibrary.

于 2012-09-11T02:12:17.237 回答