当前位置:编程学习 > C#/ASP.NET >>

请教C#调用C++ DLL的问题

在C#中是这么定义C++DLL的:
[DllImport("C:\\interface\\interface.dll")]
public static extern int SyncTransport(string eventid, string body, string message, string result);

message和result 是ref加传函数。

但是调用后会出现 “消息格式不正确,内存不足”的错误,我怀疑是message和result两个参数的问题,也有可能这两个参数据的权限不足使DLL无法给参数赋值。不知道如何解决,求肋!! --------------------编程问答-------------------- 帮帮忙啊  在C++中message和result定义为Char*

public static extern int SyncTransport(string eventid, string body, StringBuilder message, StringBuilder result); 

换成StringBuilder也不行。 --------------------编程问答-------------------- 换成char[]试过没? --------------------编程问答-------------------- char[] 如何来定义和调用呢? --------------------编程问答-------------------- 用 StringBuilder --------------------编程问答-------------------- [DllImport("C:\\interface\\interface.dll")] 
public static extern int SyncTransport(string eventid, string body, char[] message, char[] result);
调用:
char[] message= new char[1024];
char[] result = new char[1024];
SyncTransport(ventid, ody, message, result);
或者使用:unsafe
--------------------编程问答-------------------- 用char[] 和 StringBuilder 都不行啊,这是怎么回事呢?是不是他们的DLL写的有问题? --------------------编程问答-------------------- 用byte[] --------------------编程问答-------------------- 能和我讲讲原理吗? --------------------编程问答-------------------- 用byte[] 也不行,真是郁闷啊! --------------------编程问答-------------------- 你应该看下char* 字符型指针是做什么的
用byte[]比较正确

也有可能是

C/C++ 

char* Text

转换C#

[MarshalAs(UnmanagedType.LPStr)] string Text


不过建议:如果SyncTransport内传结构体的话,是不是还强些
http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/1351ed5d-7a3d-4266-8817-4eb75b6a1273
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,