Articles of DLL

Msvcr71.dll Msvcp71.dll丢失

我写了一些应用程序。 但是,当我在几个操作系统上运行它,我们正在得到这两个文件丢失。 当我将它们添加到Windows \ system32文件夹应用程序工作正常。 我看到这个解决scheme如何安装msvcr71-DLL正确,但有什么办法可以做 我的应用程序使用更新版本的最新.net附带的文件 分配。 感谢帮助。

为什么不是cl.exe生成一个有效的Windows模块?

我有一个简单的C DLL,从静态库中公开function。 DLL编译没有错误,我可以在其上运行DUMPBIN来查看导出。 但是,当我尝试用C#中的DllImport加载它时,它会这样说: System.DllNotFoundException:无法加载DLL'ei.dll':无法find指定的模块。 (从HRESULTexception:0x8007007E)。 这是在正确的目录,当然。 所以,我读到,尝试使用Dependency Walker可能是个好主意,以防我需要包含其他内容。 不幸的是,当我尝试在DW中打开我的DLL时,我得到这个: 错误:至less有一个文件不是32位或64位Windows模块。 这是我的命令: set ERL_INTERFACE_DIR=C:\Progra~1\erl5.7.2\lib\erl_interface-3.6.2\ call vcvars32.bat cl /I%ERL_INTERFACE_DIR%include /LD ei.c ei.lib Ws2_32.lib /link /LIBPATH:%ERL_INTERFACE_DIR%lib 什么可能导致这个?

VB – 隐式链接一个DLL

我正在一个VB6graphics界面,我需要隐式链接到一个DLL。 这个动机来自我以前的问题 。 有问题的DLL使用静态TLS, __declspec(thread) ,当然这当使用LoadLibray明确地链接DLL时会失败。 我真的想避免修改DLL,所以没有人知道如何欺骗VB6可执行文件隐式链接到特定的DLL?

DLL的开销

我有一个很基本的问题。 当一个库只用于一个进程时。 我应该把它作为一个静态库吗? 如果我使用库作为DLL,但只有一个进程使用它。 **什么是开销?*

dynamic库调用函数

如果可能的话,在编译期间我们不知道函数的名字的时候,加载一个dynamic库并调用它的一个函数是最好的方法? 例如,有没有办法让程序从文件中读取一个string,然后加载一个DLL并search并调用一个函数,其名称是从文件中读取的string? 帮助将非常感激。

为PHP 5.4构build/获取php_memcache.dll最简单的方法

我打算在我们的应用程序中使用Traits,在PHP 5.4中可用,需要Memcache,因此需要php_memcache.dll 我正在使用PHP 5.4最新候选版本的Windows机器上开发。 我无法find一个PHP 5.4版本的php_memcache.dll,所以想要知道如何获得它或失败,自己构build它( http://www.php.net/manual/en/install上的说明。 windows.building.php似乎有点缺乏!)。 我没有在我的机器上安装Visual Studio或任何构build工具(并且最好不想付钱)。 谢谢

加载本机库时OSGI框架挂起

情况:开源的OSGI框架SMILA(http://www.eclipse.org/smila/)是通过Apache commons-daemon(http://commons.apache.org/daemon/)作为Windows Service启动的。 尝试从OSGI包通过System.loadLibrary()加载DLL,而Manifest.mf包含Bundle-NativeCode: path/to/dll 。 环境:Windows Server 2003,Java 1.6 错误:在调用System.loadLibrary() ,完整的Java进程挂起。 当服务停止时, System.loadLibrary()完成并执行代码,直到OSGI框架closures。 在Windows Server 2008上不会发生此错误,或者OSGI框架未作为服务启动。 DLL本身被剥离到没有functiontesting。 所有导入都是静态的,唯一依赖的库是kernel32.ddl 。 谁能想象为什么会发生这种情况,以及如何解决这个问题? 包含DLL的清单: Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: NTFS Utils Acl Win32 Library Bundle-SymbolicName: com.eccenca.utils.ntfs.acl.win32 Bundle-Version: 2.2.0 Bundle-Vendor: brox IT-Solutions GmbH Fragment-Host: com.eccenca.utils.ntfs Eclipse-PlatformFilter: (& (osgi.os=win32) (osgi.arch=x86)) Bundle-NativeCode: ntfsacl/Release/NtfsAcl.dll Bundle-RequiredExecutionEnvironment: JavaSE-1.6+ 包含代码的清单: Manifest-Version: 1.0 Bundle-ManifestVersion: 2 […]

从dll函数调用正确获取Windows版本?

假设我正在写一个多用途的dll,其中包含一个获取操作系统版本的函数: void get_os_version(DWORD *major, DWORD *minor) { OSVERSIONINFOEX osvi; ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); osvi.dwOsVersionInfoSize = sizeof(OSVERSIONINFOEX); // deprecated but easier to use for this example's sake GetVersionEx((OSVERSIONINFO*)&osvi); *major = osvi.dwMajorVersion; *minor = osvi.dwMinorVersion; } 对于Windows版本高于Windows 8的版本,需要embedded一个指定受支持平台的清单(请参阅此处的详细信息)。 所以我在编译时使用/MANIFEST:NO标志禁用自动生成我的dll文件/MANIFEST:NO ,而是添加下面的清单: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> </requestedPrivileges> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> […]

可以64位EXE链接对32位DLL?

我问,因为我注意到,许多64位的EXE链接到似乎是32位的DLL。 例如,我的64位MFC应用程序链接对user32.dll, urlmon.dll, wininet.dll – 所有这些都是32位DLL驻留在Windows \ system32中。 那么,这是适用于这些DLL的MS特定的魔术,还是有向后兼容,对于需要使用传统32位DLL的64位EXE?

命令行工具来查找Dll的依赖关系

哪些命令行工具存在以recursion方式查找所有DLL依赖关系? 我试过用Visual Studio来的dumpbin和Dependency Walker (又名Depends.exe),但是dumpbin只能find第一级的依赖关系,而Dependency Walker的输出并不是真正的计算机友好。