将c#和c++很好地结合在一起

Getting c# and c++ to play nice together

本文关键字:结合 在一起 很好 c++      更新时间:2023-10-16

我有一个c#解决方案,通过COM访问一个c++项目。项目必须针对特定的处理器,在本例中为x64。我正在使用Windows安装程序来安装应用程序。

我遇到的第一个问题是c++ dll在安装时没有正确注册,程序无法访问它。我通过将c++项目添加到解决方案中来解决这个问题。

有一段时间这是有效的,一切都安装正确,但是当我试图构建时,我开始得到以下警告:

项目中. net框架的目标版本与. net框架启动条件版本'不匹配。. NET Framework 3.5'。的目标版本,更新. net框架启动条件的版本。. NET框架的高级编译选项对话框(VB)或应用程序页面(c#, f#)

如果我尝试忽略警告,安装程序将无法安装。经过一番搜索,我发现c++项目是在。net 4.0中构建的,而我的解决方案使用。net 3.5。我尝试将我的解决方案更改为4.0,但由于某种原因它停止工作,所以我将c++更改为3.5。

这在几个构建中工作,但随后我开始得到以下错误:

Error: LNK1104 cannot open file 'mfc90.dll'. 

我将该文件添加到附加依赖项部分,但随后发生了另一个链接错误(mfcs90.dll),并且在添加该错误时,我得到了x86 x64冲突。

我不知道为什么这些解决方案工作了一段时间,然后停止,我似乎找不到一个解决方案,在任何步骤的工作。如果有人看到类似的情况,我将不胜感激。

为了包含Microsoft运行时dll,您不应该简单地将dll包含在应用程序目录中。当dll有不同的依赖关系,并且您可能会遇到不同的冲突和版本控制问题时,这将没有帮助。

我建议为您的应用程序安装运行时dll的方法是在您的MSI中包含官方合并模块。

请参阅以下链接,以获得重新分发运行时库的选项:

http://msdn.microsoft.com/en-us/library/ms235316 (v =应用程序). aspx