C# 如何使用C++/另一台计算机上的CLI程序集? 我有一个第三方C++程序集,我需要在C语言项目中使用。因此,我为C++程序集编写了一个C++/CLI包装器。一切都在我的开发机器上编译并运行良好

C# 如何使用C++/另一台计算机上的CLI程序集? 我有一个第三方C++程序集,我需要在C语言项目中使用。因此,我为C++程序集编写了一个C++/CLI包装器。一切都在我的开发机器上编译并运行良好,c#,c++,c++-cli,visual-c++-runtime,C#,C++,C++ Cli,Visual C++ Runtime,但是当我将我的bin目录的内容复制到我们的另一台机器时,它崩溃了。原因是,它无法加载我的C++/CLI包装程序集。它给出了典型的消息:FileNotFoundException:无法加载文件或程序集“MyWrapperAssembly”或其依赖项之一。 因此,我做了一些调查:我确保找不到MyWrapperAssembly,并将事件处理程序添加到。在该处理程序中,我加载了MyWrapperAssembly。然后我加载了所有的文件。MyWrapperAssembly的仅反射加载工作正常。所以我确信,

但是当我将我的
bin
目录的内容复制到我们的另一台机器时,它崩溃了。原因是,它无法加载我的C++/CLI包装程序集。它给出了典型的消息:
FileNotFoundException:无法加载文件或程序集“MyWrapperAssembly”或其依赖项之一。

因此,我做了一些调查:我确保找不到MyWrapperAssembly,并将事件处理程序添加到。在该处理程序中,我加载了MyWrapperAssembly。然后我加载了所有的文件。MyWrapperAssembly的仅反射加载工作正常。所以我确信,文件是可以找到的。但是当我尝试加载它时

Assembly.LoadFrom("hiddenDirectory\MyWrapperAssembly.dll");
它因上述错误而崩溃
FileNotFoundException:无法加载文件或程序集“MyWrapperAssembly”或其依赖项之一。

因为只有反射负载工作,我确信C++层一定有错误。我比较了我的开发机器上的C++重新分配的安装版本和测试机器,发现有一些包丢失了。因此,我在测试机上下载并安装了这些软件包:

但它没有起作用。然后我测试了6台不同的电脑。我的程序在3台电脑上运行,在另外3台电脑上崩溃。唯一区别PC的是<代码>微软Visual C++ 2010运行时< /C>。安装后,它似乎可以工作

但我在互联网上找不到该软件包的安装程序。所以我在一台电脑上安装了Visual Studio 2013,我的程序在那里崩溃了。在安装VisualStudio之后(以及C++运行时),我的程序运行。

所以我假设我需要C++运行时。在我们的客户PC上不需要VisualStudio。所以我需要部署C++运行时。但问题是:

<>强>从哪里得到VisualC++运行时?< /强>


或者有人知道我遗漏了什么吗?

如果您使用的是Visual Studio 2013,您需要的是2013运行时,而不是2010运行时


您可以从这里获取最新的运行时:

您至少需要一个与用于构建C++/CLI项目的VS版本相匹配的版本(因此,如果您使用VS2010,则需要VC++2010运行时)

那么,如果你包装的C++库也需要一个VC++运行时,那么你也必须安装一个。库提供者应该告诉您依赖项


请注意,如果链接到第三方
.lib
文件,则应使用与编译该文件相同的VS版本。否则,您将同时使用两个不同的运行时,这可能会导致问题。C++或CLI必须使用一个与之兼容的运行时,但如果匹配的话,它不太可能引起麻烦。

你可能需要.NETFramework/RunSimultEnLealDeD,也检查你的C++代码是在发布模式下编译的。我在运行目标机上调试本地C++的时候遇到了一些问题,因为有不同的VC运行时间。libraries@OMGtechy安装.NETFramework。使用依赖性Walkk来确定没有找到C++ C++的依赖关系,因此您必须知道需要哪些运行时。@这是一个非开源的第三方库。在它运行的机器上,只安装了2010运行时。所以我认为,我至少需要一个已安装的运行时。@Rico-E不,您需要与已编译的运行时匹配的运行时program@Rico-E好的,如果安装了2010运行时,您的问题是什么?您已经知道它在哪里以及如何下载,只需确保它与您的程序一起安装即可。@DavidYaw:我不知道是哪个软件包安装了运行时。这是我的问题。你刚刚给了我答案。但是微软的网站似乎已经关闭了。所以我不能测试它。