用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
最新推荐文章于 2024-08-15 19:49:37 发布