2013-04-04 59 views
1

必须通过COM访问C++项目C#的解决方案。该项目必须针对特定处理器,在这种情况下为x64。我正在使用Windows安装程序来安装应用程序。获得C#和C++发挥好我一起

安装时,程序不能访问它,我跑进了C++的DLL没有被正确注册的第一个问题。我通过将C++项目添加到解决方案来解决此问题。

对于正确安装了一阵这个工作,和一切,但后来我开始下面的警告时,我试图建立:

.NET Framework的该项目的目标版本不匹配.NET Framework启动条件版本“.NET Framework 3.5”。在“高级编译选项”对话框(VB)或“应用程序页面”(C#,F#)中更新.NET Framework启动条件的版本以匹配.NET Framework的目标版本。如果我试图无视警告

的设置不会安装。经过一番搜索之后,我发现C++项目是在.NET 4.0中构建的,而我的解决方案使用的是.NET 3.5。我尝试将我的解决方案更改为4.0,但由于某种原因,它停止工作,所以我将C++更改为3.5。

这个工作的一对夫妇建立的,后来我就开始收到以下错误:

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

我添加文件到附加依赖部分,但随后另一个链接出错(mfcs90.dll)和当添加一个,我得到了一个x86 x64冲突。

我不知道为什么这些解决方案工作了一段时间,然后停了下来,我似乎无法找到在此工作的任何一个步骤的分辨率。如果有人看到类似的东西,这种洞察力将不胜感激。

回答

4

为了包括微软运行时的DLL,你不应该只需在你的应用程序目录下的DLL。当dll具有各种依赖关系时,这无济于事,您可能遇到不同的冲突和版本问题。

我会建议为你的应用程序安装运行时动态链接库的方法是在您的MSI正式合并模块。

请参见以下链接你的选择重新分配的运行时库:

http://msdn.microsoft.com/en-us/library/ms235316(v=vs.90).aspx

+0

谢谢您的答复。我确实花了一些时间尝试在C++代码中创建合并模块,但我没有成功。这是前一阵子,所以我不记得我得到的具体错误。但是,我没有在c#代码中尝试合并模块。我想知道这是否会有更好的结果? – Tim 2013-04-04 18:46:48

+1

不客气。我不确定你的意思是“在代码中创建合并模块”。合并模块用于安装,而不是代码。你不应该创建一个新的合并模块,你应该从微软下载官方的Visual C++运行时合并模块,并将它们包含在你的MSI中。 – Ran 2013-04-04 18:50:53

+0

请原谅我的无知,但我是C++的新手。我使用的代码是开源的。你是说我应该添加合并模块并在C++项目中创建一个安装程序,然后将msi添加到c#安装程序中。再次感谢您分享您的知识。 – Tim 2013-04-04 19:18:13