C++;COM:常见错误 我不得不再次沉浸在C++编程中,忘记了上次学到的大部分经验教训。(当我认为“永不再来”这句话可能用错了。) C++中COM开发中最常见的错误和反模式是什么?我使用Borland C++ Builder,但我在处理所有应用于C++编译器的事情。 < P>我会用我自己绊倒的第一个球来踢球:

C++;COM:常见错误 我不得不再次沉浸在C++编程中,忘记了上次学到的大部分经验教训。(当我认为“永不再来”这句话可能用错了。) C++中COM开发中最常见的错误和反模式是什么?我使用Borland C++ Builder,但我在处理所有应用于C++编译器的事情。 < P>我会用我自己绊倒的第一个球来踢球:,c++,com,anti-patterns,C++,Com,Anti Patterns,不要将文本字符串传递给需要BSTR参数的函数。看 我的错误是没有读手册。我只是试着通过网上的教程和代码示例来学习。如果我对COM有了很好的基本了解,我会在容易解决的问题上浪费很多时间。这一点+1.肯定如果你不掌握引擎盖下发生的事情,你会淹死的。这是可悲的(并证明COM是一个非常糟糕的框架),但很难学到。确保您了解对象模型、类型和公共接口(特别是IDispatch,如果您正在使用它)。这样,BSTR将泄漏,除非被调用的代码拥有它(后者非常罕见)。您应该使用像CComBSTR或\u bstr\t@s

不要将文本字符串传递给需要BSTR参数的函数。看


我的错误是没有读手册。我只是试着通过网上的教程和代码示例来学习。如果我对COM有了很好的基本了解,我会在容易解决的问题上浪费很多时间。

这一点+1.肯定如果你不掌握引擎盖下发生的事情,你会淹死的。这是可悲的(并证明COM是一个非常糟糕的框架),但很难学到。确保您了解对象模型、类型和公共接口(特别是IDispatch,如果您正在使用它)。这样,BSTR将泄漏,除非被调用的代码拥有它(后者非常罕见)。您应该使用像
CComBSTR
\u bstr\t
@sharptooth这样的包装类。谢谢,修好了。我认为这也是一个常见的错误:-(
CComPtr<IFoo> foo;

foo->bar("Bletch!"); // No valid BSTR prefix, so bad things will happen.
foo->bar(CComBSTR("Bletch!"));