使用 VC++ 创建跨计算机 DLL
Cross-machine DLL creation using VC++
我使用 VC++ 2008 创建了一个具有以下设置的 DLL 文件:
- 配置类型:动态库 (.dll)
- MFC 的使用:使用标准窗口库 使用 ATL
- :不使用 ATL 公共语言
- 运行库支持:公共语言运行库支持 (/clr)
创建的 DLL 在我的机器(创建它的机器)上运行良好,但不能在另一台机器上使用(我用 3 台机器测试过)。有关更多详细信息,我通过JNI(Java本机接口)加载此DLL文件。在我的机器上它可以工作,但在其他机器上它显示错误"java.lang.UnsatisfiedLinkError::应用程序无法启动,因为它的并行配置不正确。
我的问题是:1.创建无法在多个环境中工作的DLL时,我是否错过了任何配置?2.我们可以创建一个可以在不同机器上运行的DLL文件吗?
非常感谢!
您需要确保 VC++ 2008 可再发行组件已安装在其他计算机上。要仔细检查这是问题所在,请在另一台计算机上运行Dependency Walker,它将显示它正在寻找的内容:http://www.dependencywalker.com/
您可以在 Microsoft 网站上找到 VC 2008 redist EXE:http://www.microsoft.com/en-us/download/details.aspx?id=29
或者实际的 DLL 位于 VC 2008 安装文件夹的 redist 文件夹中。
您可以在谷歌上搜索"并行配置不正确",您会发现很多提示原因可能是什么。但。。。先试试这个:在VS,项目设置,C/C++,代码生成中:将"运行时库"设置为"多线程"(或"多线程调试"。(顺便说一句:您需要公共语言运行时支持吗?
除了@snowdude所说的是正确的之外,还有另一个可能的问题:如果这些其他PC没有安装VS2008,并且您链接到调试MSVCR*库,那么您就不走运了。只有发布模式二进制文件才能部署到用户系统,而无需跳转。
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 系统错误:程序无法启动,因为您的计算机中缺少MSVCP140D.DLL。尝试重新安装该程序以解决此问题
- 如何在另一台未安装 Visual Studio 的计算机中使用由 Visual Studio 生成的 dll
- 您的计算机中缺少libgcc_s_sjlj-1.dll
- gdal201.dll在Visual Studio 2012上的计算机错误中缺少
- libgcc_s_dw2-1.dll在您的计算机中缺少
- 计算机中缺少"sfml-system.dll",错误
- QtGui4.lib(QtGui4.dll):致命错误LNK1112:模块计算机类型"X86"与目标计算机类型"x64"冲突
- 我的计算机中缺少 SDL.dll - VS 2010
- 计算机中缺少 TBB.dll
- 使用 VC++ 创建跨计算机 DLL
- 程序无法启动,因为您的计算机中缺少libgcc_s_dw2-1.dll。简单的控制台
- Qt + VS2010:程序无法启动,因为<xyz>您的计算机中缺少.dll
- 计算机调试模式 Visual C++ 2012 中缺少MSVCP100D.dll
- Visual Studio c ++ LoadLibary 错误:程序无法启动,因为您的计算机中缺少 dll
- 程序无法启动,因为您的计算机中缺少MSVCP90D.dll
- 此程序无法启动,因为您的计算机中缺少freeglut.dll
- 此程序无法启动,因为您的计算机中缺少 Libeay32.dll
- msvcprtd.lib(MSVCP100D.dll):致命错误LNK1112:模块计算机类型"X86"与目标计算机类型"x64"冲突
- 程序无法启动,因为您的计算机中缺少 mfc120ud.dll