用C++写Dll需要很多规范,而在.Net平台下通过c#实现的Dll则要方便许多。但在c++中调用c#写的Dll就得注意一下。不能像引用C++本身的DLL一样。这里讲一下应该注意的细节:(以VS2005为例,VS2008类似) 1.因为用c++本身 的默认配置是没有公共语言运行库支持的,所以首先的修改配置,点击项目->属性->配置属性->常规.在公共语言运行库支持中选择"公共语言运行库支持(/clr)". 2.引用Dll文件和命名空间. 如果我们要引用一个命名空间为UranusNet,文件名为UranusNet.dll的文件.则引用方法为: #using "../debug/UranusNet.dll" (这里用using而非include) using namespace UranusNet; 记得要将dll文件拷贝到对应的目录下 3.调用方法 加入要调用UranusNet命名空间下的UGSInfo类.则代码如下所示:(假设该类有logIn和writeBlog两个方法) UGSInfo ^ugs = gcnew UGSInfo();(这里要用^而不是*,gcnew而非new) if(ugs->logIn("abc","123")) ugs->writeBlog("很好", "很强大"); democode: 1 创建C# DLL,需要指定应用类型为“类库”,代码: namespace CSLib { public class Class1 { private string name; public string Name { get { return name; } set { name = /"Your Name: /" + value; } } } } 2 C++客户程序,是个控制台应用,代码: #using /"..//debug//CSLib.dll/" using namespace CSLib; int _tmain(int argc, _TCHAR* argv[]) { Class1 ^c = gcnew Class1(); c->Name = /"zzj/"; printf(/"%s/", c->Name); return 0; } 3 几点要记住: 1 使用#using引用C# DLL,而不是#include.我就是想当然的使用了后者,所以浪费了一上午的时间; 2 别忘了using namespace CSLib; 3 使用C++/clr语法,采用正确的访问托管对象,即:使用帽子‘^’,而不是星星‘*’。 以上就是在c++调用C#的Dll的要点。由于c#的简洁方便的特点,所以我们可以用C#快速的实现DLL文件。 当然一些更底层的功能还得用c++实现。^_^
c++ Call C# dll
最新推荐文章于 2023-08-01 16:02:51 发布