Articles of DLL

我可以在同一个进程中使用两个不兼容的DLL版本吗?

我使用两个由同一供应商生产的商业库,称为VendorLibA和VendorLibB。 这些库分发尽可能多的依赖于编译器版本的DLL(例如VC7,VC8)。 两个库都依赖于另一个由该供应商生产的库,名为VendorLibUtils,并包含在一个DLL中。 问题:VendorLibA使用与VendorLibB不同版本的VendorLibUtils。 这两个版本不是二进制兼容的,即使是这样,使用错误的版本也是一个坏主意。 有什么办法可以在同一个进程下使用这两个库吗? 注意: LoadLibrary无法解决这个问题,因为我的stream程并不是导入VendorLibUtils的stream程。 编辑:忘了提起明显的,我没有任何商业图书馆的源代码,可能我永远不会( 叹气 )。 编辑:另一个顺便说一句,是这样做的: 如何在Windows中结合GUI应用程序

为什么我不能从命令行复制C:\ SysWOW64中的DLL?

我知道我在做什么很奇怪,请不要担心。 但是, 发生的事绝对是疯狂的。 如果我尝试使用Windows 7 64位上的copy从命令行copy C:\SysWOW32\的DLL文件,实际上我最终得到的是C:\System32\ 。 为什么发生这种情况? 确定 – dumpbin能够区分DLL文件 C:\Users\user\Desktop>dumpbin /headers C:\Windows\System32\opengl32.dll | grep machine 8664 machine (x64) C:\Users\user\Desktop>dumpbin /headers C:\Windows\SysWOW64\opengl32.dll | grep machine 14C machine (x86) 32 bit word machine 不行 – 其他命令,如md5sum(来自GOW )得到错误的字节! C:\Users\user\Desktop>md5sum C:\Windows\system32\opengl32.dll \d1bbe227367ed791d5fcf08e132d2956 *C:\\Windows\\system32\\opengl32.dll C:\Users\user\Desktop>md5sum C:\Windows\SysWow64\opengl32.dll \d1bbe227367ed791d5fcf08e132d2956 *C:\\Windows\\SysWow64\\opengl32.dll 不正确 – 使用命令行复制64位DLL C:\Users\user\Desktop>copy C:\Windows\System32\opengl32.dll . 1 file(s) copied. […]

在Windows Server 2008 R2上注册DLL文件

我试图在Windows Server 2008 R2上注册一个COM DLL文件。 以下是我采取的步骤: 以pipe理员身份运行cmd c:\windows\system32\regsvr32.exe c:\tempdl\temp12.dll 当我执行该命令时,我得到这个错误: 模块temp12.dll加载失败。 确保二进制文件存储在指定的path或出现它来检查二进制或相关的.DLL文件的问题。 指定的模块无法find。 我能够在Windows 2000上注册相同的DLL文件。 我也试过了 c:\windows\syswow64\regsvr32 "c:\tempdl\temp12.dll" 我得到这个错误: 加载了模块c:\tempdl\temp12.dll ,但对DllRegisterServer的调用失败,错误代码为0x80040154 。 有关此问题的更多信息,请使用错误代码作为search词在线search

dynamic加载exe文件

我试图从我的程序dynamic加载一个EXE文件,并从该dynamic加载EXE运行SomeProcedure。 这是我在加载的exe文件 – library.exe interface procedure SomeProcedure; stdcall; implementation procedure SomeProcedure; begin ShowMessage('Ala has a cat'); end; 这是我的exe文件加载的library.exe,并尝试从它运行SomeProcedure。 type THandle = Integer; TProc = procedure(); var AHandle: THandle; Proc: TProc; procedure TForm1.Button1Click(Sender: TObject); begin AHandle := LoadLibrary('library.exe'); if AHandle <> 0 then begin @Proc := GetProcAddress(AHandle, 'SomeProcedure'); if @Proc <> nil then try Proc; finally […]

使用命令行csc.exe创build一个C#可移植类库?

我还没有find任何有关如何做到这一点的信息,甚至根本没有可能。 http://msdn.microsoft.com/en-us/library/e13syb43 没有提到关于构build一个可移植的类库的任何事情 http://msdn.microsoft.com/en-us/library/gg597391.aspx 没有提到任何有关命令行界面的内容。 有没有其他人试图做到这一点,发现一个解决scheme/发现它是不可能的?

WindowsError:用ctypes加载DLL时出错

这适用于Python 2.7的Windows 7: lib = ctypes.cdll.LoadLibrary('prov_means') provmeans = lib.provmeans 库prov_means.DLL在我的工作目录中。 它导出一个简单的,独立的C函数provmeans()而不需要依赖。 当我在Windows XP和Python 2.7上尝试同样的事情时, Traceback (most recent call last): File "D:\python\Auxil\src\auxil.py", line 130, in <module> lib = ctypes.cdll.LoadLibrary('prov_means') File "C:\Python27\lib\ctypes\__init__.py", line 431, in LoadLibrary return self._dlltype(name) File "C:\Python27\lib\ctypes\__init__.py", line 353, in __init__ self._handle = _dlopen(self._name, mode) WindowsError: [Error 126] The specified module could not be […]

有没有可能使用Java webstart执行.exe或DLL?

我知道java webstart正在一个安全的沙箱下运行。 是否有可能在jar中包含.dll / .exe(或者让webstart将其下载到本地机器),然后执行它(使用Runtime.exec或进程等) 请指教。 任何build议/意见是值得欢迎的!

DLL和STL和静态数据(哦我的!)

好的…..我已经完成了有关相关问题的阅读,还有一些MSDN文章,以及大约一天的Googlesearch。 什么是目前的“最先进的”这个问题的答案: 我正在使用VS 2008,C ++非托pipe代码。 我有一个解决scheme文件与不lessDLL和不lessEXE。 只要我完全控制了构build环境,使得所有的部分和部分都使用相同的标志,并且使用相同的运行时库,并且没有人拥有静态链接的CRT库,那么我可以传递STL对象吗? 看来这应该是好的,但是根据你阅读的是哪篇文章,恐惧,不确定性和怀疑是很多的。 我知道模板在后台产生静态数据有各种各样的问题(每个DLL都会得到自己的副本,导致心痛),但是普通的旧STL又如何呢?

获取DLL文件的CLSID?

我想创build一个小应用程序来添加和删除registry中的用户定义的上下文菜单项。 为了做到这一点,我需要得到一个任意的DLL的CLSID,所以我可以备份以前的条目,如果它们存在之前写入新的。 虽然regsrv32设法创造了这个神奇的号码,但我没有find任何方法来自己得到这个号码。 我希望有比这更好的东西: 扫描DLL名称的registry 如果找不到,请注册,再次扫描,然后再取消注册 如果DLL已经重新命名,我可以看到问题的可能性。

尝试在Windows上运行Qt应用程序的发行版本时出错

我正在尝试构build我的应用程序的Windows版本。 该程序编译和运行良好的Qt造物主,但是当我试图独立运行它会引发以下错误: The procedure entry point _Z17qt_message_output9QtMsgTypePKc could not be located in the dynamic link library QtCore4.dll 我的应用程序文件夹中有所有必需的dll,它们与我从Qt网站下载的二进制文件一样。 这个错误令我疯狂,因为我似乎找不到任何理由。 该应用程序在Linux和MAC OS X上运行良好。