首先要吐槽一下博客园首页右栏的广告。最近总有吓人的整容广告。真的吓坏了。=。=你有同感吗? 前段时间博客园在语言上引发了广泛的讨论。事实上,整个程序员圈的语言之争并没有停止。在我个人看来,语言只是一种工具。当需要写底层的时候,可以用C++。当你需要编写令人眼花缭乱的桌面应用程序时,你可以使用C#WPF。当你需要大型网站web开发时,可以选择JAVA。当然还有很多其他语言。这只是不同项目的选择。每种语言都有自己的阶段,数据结构和算法千古不变。根据家人的说法,轻轻喷洒。下一主题:跨越语言障碍:C++/CLI调用C#当C#项目需要引用C++dll时,可以直接使用DLLIMPORT调用。另一方面,C++项目不能简单地通过引用使用C#DLL。因为公共语言运行库不支持C++项目的默认配置。所以我们需要更改一些配置来调用C#dll。先使用托管C++(CLI)对C#dll进行一次封装,然后通过非托管C++调用封装后的dll。其中c++/cli调用c#dll的关键步骤如下:【感谢源生萌友。补充:本示例仅供开发者研究使用。C++clr会和一些c++编译选项冲突,不支持mfc的一些外部链接源。]首先我们完成C#dll的开发:namespaceCsharp{publicclassClass1{publicstringName=string.Empty;publicClass1(){Name="WecanuseC#!!";}}}编译得到Csharpdll。接下来配置C++项目的属性:添加公共语言运行时支持/clr(c++/cli)下一步添加新的引用,选择第一步编译的Csharp.dll代码使用#using和usingnamespace.调用dll。分配内存时注意使用gcnew,需要gc为其分配内存。托管对象需要使用^声明。#include"stdafx.h"#using"Csharp.dll"usingnamespaceCsharp;int_tmain(intargc,_TCHAR*argv[]){Class1^a=gcnewClass1();printf("%s/n",a->姓名);返回0;}运行后结果如下:这样C++/CLI就可以调用C#dll了。至此,其他项目中的非托管C++代码可以通过调用c++dll来调用托管的c#dll,dll起到wrapper的作用。原文链接:http://www.cnblogs.com/xfuture/p/3728417.html
