现在的位置: 首页 > 综合 > 正文

My first testcase about C#&C++

2013年02月21日 ⁄ 综合 ⁄ 共 609字 ⁄ 字号 评论关闭

第一次将C#与c++一起使用的小例子。在C++控制台程序中调用C#编写的dll。

半年了,一直和C#打交道,主要是winform,web开发也做了点。想着为自己积累代码库,所以临时写了一个LogHelper类,帮助我以后编程过程中操作日志文件。日志文件大家肯定都不陌生啦,每个程序员都会接触到的。

 

类的主要结构就是上面那个样子啦。很是简单吧。呵呵!具体的实现就不说啦。个人有个人的风格。

首先谈一下如何引用dll

#using "..\\XXX\\XXX.dll"

using namespace XXX;

就是上面这两行的代码就可以啦。其中路径可以是相对的,明空间一定要与dll中定义的一样。

其次,在编译环境中,一定要打开/clr开关。 

然后说一下c++中如何调用C#的方法,其实没什么特别的。一样的。

最后,就是我遇到最棘手的问题。类型转换问题。C#中的System::String与C++中的std::string。

我的解决办法是System::String^ XXX= gcnew System::String(stdXXX.c_str());

C++/CLI中使用gcnew关键字表示在托管堆上分配内存,并且为了与以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下:

1. gcnew返回的是一个句柄(Handle),而new返回的是实际的内存地址。
2. gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放。

抱歉!评论已关闭.