c#调用c++dll时const char*类型应该怎么对应
这个是c++写的函数const char* DownLoadFile(char* a, char* b)如果用c#调用DllImport应该怎么写?主要是类型要正确,
我之前写的运行期一直报错,方法如下
[DllImport("assemble.dll")]
public static extern StringBuilder DownLoadFile(string a,string b);
请求大家的帮助,谢谢 --------------------编程问答-------------------- 报什么错,是不是对应的文件没有找到,或者下载文件的存放路径未找到? --------------------编程问答-------------------- string
--------------------编程问答-------------------- C++ C#
=====================================
WORD ushort
DWORD uint
UCHAR int/byte 大部分情况都可以使用int代替,而如果需要严格对齐的话则应该用bytebyte
UCHAR* string/IntPtr
unsigned char* [MarshalAs(UnmanagedType.LPArray)]byte[]/?(Intptr)
char* string
LPCTSTR string
LPTSTR [MarshalAs(UnmanagedType.LPTStr)] string
long int
ulong uint
Handle IntPtr
HWND IntPtr
void* IntPtr
int int
int* ref int
*int IntPtr
unsigned int uint
COLORREF uint
--------------------编程问答-------------------- 报的错误为:尝试读取或写入受保护的内存。这通常指示其他内存已损坏 --------------------编程问答-------------------- 返回值用byte*吧 --------------------编程问答--------------------
这是个不好的导出函数的例子。返回的字符串不清楚是如何释放的,而且声明const后似乎调用方也不能释放。
如果不关心内存泄露,那你可以用:
[DllImport("assemble.dll")]
public static extern IntPtr DownLoadFile(string a,string b);
然后用Marshal.PtrToStringAnsi(IntPtr result)来得到返回字符串。
补充:.NET技术 , C#