读书人

C#调C dll时传送IntPtr获取不到值

发布时间: 2012-10-30 16:13:36 作者: rapoo

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

读书人网 >C#

热点推荐