#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 [] にて削除する必要があります。
削除することで、原因不明のメモリーリークが治りました (^^;)