在C++项目中调用C#的DLL,需要将C#编译成DLL,再由C++进行调用。我最近遇到一个问题,需要在C++项目中使用SwfDotNet库,这是一个由C#编写的读写Swf文件的库,但如何让C++调用C#的DLL却让我费尽心思。在尝试过程中,遇到了编译警告C4819,提示该文件包含不能在当前代码页中表示的字符,需要将文件保存为Unicode格式。这让我意识到自己对C++/CLI语法的理解还不透彻。下面提供了一个简单的示例,创建一个C#DLL,代码如下:namespaceCSLib{publicclassClass1{privatestringname;publicstringName{get{returnname;}set{name="YourName:"+value;}}}}在C++客户程序中,创建一个控制台应用,代码如下:#using"..\debug\CSLib.dll"usingnamespaceCSLib;int_tmain(intargc,_TCHAR*argv[]){Class1^c=gcnewClass1();c->Name="zzj";printf("%s\n",c->Name);return0;}需要注意的是,要正确地引用C#DLL,应该使用#using而不是#include。我就是因为误用了后者,浪费了整整一个上午。另外,别忘了使用usingnamespaceCSLib;以及使用C++/clr语法,采用正确的访问托管对象,即:使用帽子'^',而不是星星'*'。通过这个简单的示例,我发现了解决问题的关键在于对C++/CLI语法的正确理解和应用。