C#调C dll时传递IntPtr获取不到值
- C/C++ code
//这是在.h头文件中定义的struct _TestStruct;typedef struct _TestStruct TestStruct;//这是在.cpp文件中定义的typedef struct _TestStruct{ TestStruct1 struct1; TestStruct2 struct2;}TestStruct;__declspec(dllexport) TestStruct* __stdcall Init(){ return init();}__declspec(dllexport) BOOL __stdcall Update_Info(intptr_t* struct, char* key, char* value){ return update_info((TestStruct*)struct, key, value);}//释放__declspec(dllexport) void __stdcall Free_Struct(intptr_t struct){ return free_struct((TestStruct*)struct);}
- C# code
[DllImport("Test.dll")] public static extern IntPtr Init(); [DllImport("Test.dll")] public static extern bool Update_Info(IntPtr struct, String key, String value); [DllImport("Test.dll")] public static extern void Free_Struct(IntPtr struct);
因为不需要公开,所以在头文件中定义的结构,在.cpp文件中实现结构。
现在问题是C#要调用dll中这几个函数,运行全部通过,但是带不出值,
请大家帮帮忙,急啊......
在线等,如果解决,必定加分答谢!~
[解决办法]
帮顶一下…………
[解决办法]
http://msdn.microsoft.com/zh-cn/library/aa984739(VS.71).aspx
不建议直接返回结构体类型,最好改成通过参数指针的方式返回结构体类型
http://topic.csdn.net/u/20100308/16/ef639120-ae8c-41f5-9d5d-e9b57e17a302.html