【发布时间】:2009-02-18 03:11:53
【问题描述】:
首先,我不是 C++ 程序员(但我正在学习)。我终于设法使用 Visual C++ 2008 Express Edition 修改和编译了一些 C++ 源代码。我试图在完整版 Visual C++ 2003 中编译相同的代码,但没有成功(我遇到了各种各样的错误,但没有运气)。
问题是在 Windows Vista 上使用 RunDll32 调用 DLL 一切正常,但是当我在 Windows 2000 上尝试相同的 rundll32 调用时,我收到以下错误:
“加载 mysampledll.dll 时出错” "找不到指定的模块。"
当然,我尝试过设置完整路径、移动文件等……但没有运气。我保证该文件存在并且具有正确的权限。
我认为与 Vista 中的 DLL 一起编译的清单可能有问题。所以我使用资源编辑器删除了它,但是在 Vista 和 Win2k 中我得到了同样的错误。这是清单:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
现在,我假设问题在于 Win2k 没有安装 Microsoft.VC90.CRT,但为什么我的 DLL 有这种依赖关系?我在项目属性中将“Common Language Runtime Support”设置为“No Common Language Runtime Support”,为什么还需要CLR?有没有办法更改清单以使用 Win2k 中默认可用的较旧的 Visual C++ 运行时?对不起,我对这些问题的无知,并提前感谢您的帮助。
【问题讨论】:
标签: visual-c++ dll manifest windows-server-2000