C++/CLI 中的 void* 到 Object^
我正在致力于将大量 .h 和 .lib 文件从本机 C++ 包装到托管 C++,以便最终用作 C# 中引用的 .dll。
一些本机 C++ 函数的返回类型为 void*。 当我将值传回调用代码时,我不确定如何处理这个问题。 例如:如果 C# 应用程序调用我的 dll 包装器,我会从本机调用返回什么:
void* start(ThreadFunc,void *, unsigned *);
我当前正在尝试将返回结果装箱到通用 System::Object^ 中,但没有成功。 这是包装器中的调用:
m_NativeThread->start(cb,
GCHandle::ToIntPtr(GCHandle::Alloc(o)).ToPointer(),
static_cast<unsigned int*>(GCHandle::ToIntPtr(GCHandle::Alloc(u)).ToPointer())));
任何人都可以提供解决方案吗?
I am working on wrapping a large number of .h and .lib files from native C++ to Managed C++ for eventual use as a referenced .dll in C#.
Some of the native C++ functions have a return type of void*. I am not sure how to handle this when I pass back the value to my calling code. For instance: if a C# app calls my dll wrapper, what do I return from the native call:
void* start(ThreadFunc,void *, unsigned *);
I am currently attempting to box the return in a generic System::Object^ with no luck. This is the call in the wrapper:
m_NativeThread->start(cb,
GCHandle::ToIntPtr(GCHandle::Alloc(o)).ToPointer(),
static_cast<unsigned int*>(GCHandle::ToIntPtr(GCHandle::Alloc(u)).ToPointer())));
Can anyone offer a solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您的托管代码需要查看 void* 中的数据:
如果您的托管代码不需要查看 void* 中的数据:
If your managed code needs to see the data in the void*:
If your managed code doesn't need to see the data in the void*:
你能把它变成一个 IntPtr 吗? 您希望客户如何处理 void*?
Can you make it an IntPtr? What do you expect the client to do with the void*?