我有一个存在于某个位置的 DLL。我创建了另一个依赖于这个 DLL 的应用程序。如何在运行时引用 DLL?如果我将 DLL 保存在与 exe 相同的目录中,它就可以工作。但是,这不是我的情况。我尝试使用 regsvr32.exe 在注册表中加载和注册库。但是当我这样做然后运行 exe 时,它不会启动它。
如果你能给我一些选择,那就太好了。还有为什么 regsvr32.exe 在这种情况下不起作用?
Regsvr32.exe 仅适用于特定类型的 DLL,即进程内 COM 服务器。如果它抱怨找不到 DllRegisterServer 入口点,那么它就不是这样的 DLL。
共享 DLL 在上个世纪是有意义的,当时一台机器有 16 兆字节的 RAM,整个操作系统和 Windows 7 的“去钓鱼”壁纸位图一样大。这些天你不遗余力地防止共享 DLL。因此,您将逃离可怕的DLL 地狱。特别是 COM 服务器的问题。
但是你可以,你必须将目录添加到 PATH 环境变量中。应用程序也可以通过调用 SetDllDirectory() 来实现。假设它知道 DLL 的位置,这并不典型。
最好的方法就是不要这样做。只需复制 DLL。
查找 DLL 的规则可在此处找到:
http://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.80).aspx
请注意,您可以将相关目录添加到PATH
环境变量中。
如果您有一个始终可以找到您的文件的特定位置(或可从您的应用程序配置),您可以在调用LoadLibrary
.