将c#和c++很好地结合在一起
Getting c# and c++ to play nice together
我有一个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
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 将图形属性与 std::unique_ptr 捆绑在一起
- 你能在 c++ 中将不同的数字类型加在一起吗?
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 为什么push_back和emplace_back结合在一起时,会有不同的行为
- 在浮点精度成为一个问题之前,可以将多少个浮点值加在一起
- 为什么在template函数广播中把两个extensor表达式加在一起不正确
- 实现具有浮点键的类似哈希表的数据结构,其中公差内的值被合并在一起
- 如何在Qt TableView中将列的宽度调整为数据并将最后一部分拉伸在一起
- 编译器如何将链表中的地址字符串在一起?
- 在 c++ 中,两个日志行与 log4Cxx 混合在一起
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 将许多向量排序在一起
- C++ std:: 并包括它们如何组合在一起?
- 如何将数值变量与计时文字结合在一起
- 将非虚拟接口和多级继承结合在一起
- 虚拟内存以及它们是如何结合在一起的
- 将c#和c++很好地结合在一起
- C++中类的声明将接口与该接口的实现结合在一起