首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#调用c++的dll,字符串传递有关问题

2012-04-07 
求助:C#调用c++的dll,字符串传递问题。c++中的函数定义如下:extern C __declspec(dllexport) DataBuffer*

求助:C#调用c++的dll,字符串传递问题。
c++中的函数定义如下:
extern "C" __declspec(dllexport) DataBuffer* run(char* inputDataURL, char* runtimeFilePath)
{
 cout<<inputDataURL<<endl;
}
其中DataBuffer为结构体。
c#中函数声明如下:
public static extern IntPtr run(string uml, string name);
调用如下:
string a="bcde";
string b="fghijk";
IntPtr intp = run(a, b);
预期输出结果为“bcde”,运行后发现,只能输出字符串a的首字母‘b'。求助:我该如何定义c++中函数或者c#中函数的,才能实现c#向c++传递字符串。让其输出c#中的字符串。
谢谢!

[解决办法]
charset ansi
[解决办法]

探讨

charset ansi

[解决办法]
C#的定义
public static extern IntPtr run([MarshalAs(UnmanagedType.LPArray)]byte[] uml, [MarshalAs(UnmanagedType.LPArray)]byte[] name);


调用
byte[] buml = new byte[]{};
byte[] bname = new byte[]{};

string a="bcde";
string b="fghijk";
buml = System.Text.Encoding.ASCII.GetBytes(a);
bname = System.Text.Encoding.ASCII.GetBytes(b);

IntPtr intp = run(buml , bname );

热点排行