人気ブログランキング | 話題のタグを見る
_com_util::ConvertStringToBSTR() のリンクエラー
#include <comutil.h>
#pragma comment(lib, "comsupp.lib")

を.cppファイルの先頭に入れているのに、
wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)

がリンクエラーになってしまうのはなぜ!?

UNICODEでビルドしたらうまくいくのに~、、、

しょうがないので、VC.NET 2003のフォルダから、comsupp.lib を探してみると、なんと、4種類のcomsuppを発見しました。

comsupp.lib
comsuppd.lib
comsuppw.lib
comsuppwd.lib


どうやら、リリース版、デバッグ版のそれぞれに、ANSI文字列版とUNICODE版があったみたいです。

#include <comutil.h>
#pragma comment(lib, "comsupp.lib")
#pragma comment(lib, "comsuppw.lib")


とする事で、リンクに成功しました~ (^^) ホッ

こういう不可解なリンクエラーって本当に困るんですよね~
焦っているときなんかは、焦りをイライラに変える起爆剤になったりして。。。

-追記&修正-

ちなみに、この関数と、逆の仕事をする関数
char* BSTR __stdcall ConvertStringToBSTR(const char* pSrc)
char* __stdcall ConvertBSTRToString(BSTR pSrc)

は、内部で戻り値のためのメモリを割り当てるので、受け取ったcharポインタは、自力で削除する必要があります。
BSTR は、 SysFreeString() にて、 char* は、 delete [] にて削除する必要があります。

削除することで、原因不明のメモリーリークが治りました (^^;)
ソニーストア

by isoq | 2005-11-28 13:28 | C/C++/Win32
<< Windows Media P... 身近な秋 >>