Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用VC+创建跨机器DLL+;_C++_Visual Studio 2008_Visual C++_Dll_Win32com - Fatal编程技术网

C++ 使用VC+创建跨机器DLL+;

C++ 使用VC+创建跨机器DLL+;,c++,visual-studio-2008,visual-c++,dll,win32com,C++,Visual Studio 2008,Visual C++,Dll,Win32com,我使用VC++2008创建了一个DLL文件,设置如下: 配置类型:动态库(.dll) MFC的使用:使用标准Windows库 使用ATL:不使用ATL 公共语言运行时支持:公共语言运行时支持(/clr) 创建的DLL在我的机器(创建它的机器)上运行良好,但不能在另一台机器上使用(我用3台机器进行了测试)。有关更多详细信息,我通过JNI(Java本机接口)加载此DLL文件。在我的机器上它可以工作,但在其他机器上它显示错误“java.lang.UnsatifiedLinkError::应用程序无

我使用VC++2008创建了一个DLL文件,设置如下:

  • 配置类型:动态库(.dll)
  • MFC的使用:使用标准Windows库
  • 使用ATL:不使用ATL
  • 公共语言运行时支持:公共语言运行时支持(/clr)
创建的DLL在我的机器(创建它的机器)上运行良好,但不能在另一台机器上使用(我用3台机器进行了测试)。有关更多详细信息,我通过JNI(Java本机接口)加载此DLL文件。在我的机器上它可以工作,但在其他机器上它显示错误“java.lang.UnsatifiedLinkError::应用程序无法启动,因为它的并行配置不正确…”

我的问题是: 1.在创建无法在多个环境中工作的DLL时,我是否错过了任何配置? 2.我们可以创建一个在不同机器上工作的DLL文件吗


非常感谢你

实际上,你可以在谷歌上搜索“并行配置不正确”,你会发现很多提示,说明原因可能是什么。 但是首先尝试一下: 在VS、项目设置、C/C++、代码生成中:将“运行时库”设置为“多线程”(或“多线程调试”)。
(顺便说一句:您需要公共语言运行时支持吗?

您需要确保其他计算机上已安装了VC++2008可再发行版本。要仔细检查这一问题,请在另一台计算机上运行Dependency Walker,它将向您显示它在寻找什么:

您可以在microsoft网站上找到VC 2008 redist EXE:


或者实际的DLL在VC 2008安装文件夹的redist文件夹中。

除了@snowdude所说的是正确的之外,还有另一个可能的问题:如果这些其他PC没有安装VS2008,并且您链接到调试MSVCR*库,那么您就不走运了。只有发布模式的二进制文件可以部署到用户系统上,而无需安装操作跳跃。

谢谢你的回答。我的“运行时库”配置已经是多线程调试。我真的不明白使用或不使用CLR有什么不同(请原谅,因为我刚刚开始学习VC++两天)。但是当我使用选项Not use CLR时,项目无法编译。我想我使用了一些名称空间,Require CLR./MT不是/CLR编译代码的选项。您需要向他展示如何正确安装CRT DLL。