My first testcase about C#&C++
2010-03-11 10:13
399 查看
第一次将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创建的对象必须自己来管理和释放。
半年了,一直和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创建的对象必须自己来管理和释放。
相关文章推荐
- My First robt TestCase
- MY first Quetion about Windows Mobile & EVT?
- python调用py方法,报错【ValueError: no such test method in <class 'mytestcase.MyTestCase'>: runTest】
- test my first article
- C++ "multiple definition of .. first defined here 错误的修改
- My Test about Mat
- My First Blog,It's my Start!
- (C#)单词反转 位置不变 e.g., Welcome to my blog! -> emocleW ot ym !golb
- Ubuntu下面的一个简单的C++程序——My first C++ demo in Linux
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- c++&c#
- C++调用C#类库 &amp;&amp; 非托管C++字符串和托管字符串的转换
- 【《WPF手册》读书笔记系列】第0章-C++&C#和MFC&WPF
- C++报错集合:error: 'CppUnit::TestFixture' is an inaccessible base of 'LMQueryConnectionTest'
- Android有关Please execute 'adb uninstall my.test' in a shell报错处理
- My Web Access Code in C#(Basic Post&Get method) / C#访问Web代码(基本Post和Get方法)
- [C#] 001_MyFirstApp
- C# ORM—Entity Framework 之Database first(数据库优先)&Model First(模型优先)(一)
- java、C#以及C++中&&和||,&和|的联系和区别
- 写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”);