C++/CLI 互操作:COM 函数始终返回 null IntPtr

发布于 2024-10-04 09:30:02 字数 476 浏览 1 评论 0原文

我有使用 COM 库的 C++/CLI 模块。 COM 库函数返回指向该对象的指针。 C++/CLI 中 COM 函数调用的签名如下所示

          IntPtr p = myCOMObject->GetSettings();

在 COM 接口中,同一函数具有以下签名

         virtual HRESULT STDMETHODCALLTYPE GetSettings( 
        /* [retval][out] */ void *CSettings) = 0; 

参数对象 *CSettings 是在 GetSettings 函数中创建的其他类的本机 C++ 对象。

在 C++/CLI 中调用此函数时。我总是将 IntPtr 获取为“0”并且没有为其设置任何值。我检查了纯 C++ 代码,得到了正确的对象。这可能是什么原因。我做错了什么请提出建议。

I have C++/CLI module which uses COM library. COM library function returns pointer to the object. Signature of the COM function call in C++/CLI is like this

          IntPtr p = myCOMObject->GetSettings();

In COM interface same function has the following singnature

         virtual HRESULT STDMETHODCALLTYPE GetSettings( 
        /* [retval][out] */ void *CSettings) = 0; 

argument object *CSettings is native C++ object of some other class created in side GetSettings function.

When call this function in C++/CLI. I always Get IntPtr as '0' and no value set to it. I checked with pure C++ code, I get proper object. what could be the reason for this.Am i doing somthing wrong please suggest.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文