COM / Typelibをリソースとして埋め込む | かに太郎、ただいま開発中

かに太郎、ただいま開発中

Windowsアプリ作ってます。

C++とMFCから、C#とXAMLにのんびり移行中。

忘れっぽいので、健忘録。

tlb ファイルを配布してもいいんだけど、

忘れそうな気がするので、exeに埋め込もうとした。

rc ファイルに追加すればよい。2箇所ある。


#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

   (略)


3 TEXTINCLUDE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
"#define _AFX_NO_TRACKER_RESOURCES\r\n"
"#define _AFX_NO_PROPERTY_RESOURCES\r\n"
"\r\n"
"#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)\r\n"
"#ifdef _WIN32\r\n"
"LANGUAGE 17, 1\r\n"
"#pragma code_page(932)\r\n"
"#endif\r\n"
"#include ""res\\ODesign.rc2"" // Microsoft Visual C++ 以外のツールで編集されたリソース\r\n"
"#include ""l.jpn\\afxres.rc"" // 標準のコンポーネント\r\n"
"#include ""l.jpn\\afxprint.rc"" // 印刷/印刷プレビュー リソース\r\n"
"#endif\r\n"
"1 TYPELIB ""hoge.tlb""\r\n" ★追加
"\0"
END


   (略)


#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#define _AFX_NO_SPLITTER_RESOURCES
#define _AFX_NO_OLE_RESOURCES
#define _AFX_NO_TRACKER_RESOURCES
#define _AFX_NO_PROPERTY_RESOURCES

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
LANGUAGE 17, 1
#pragma code_page(932)
#endif
#include "res\ODesign.rc2" // Microsoft Visual C++ 以外のツールで編集されたリソース
#include "l.jpn\afxres.rc" // 標準のコンポーネント
#include "l.jpn\afxprint.rc" // 印刷/印刷プレビュー リソース
#endif

1 TYPELIB "hoge.tlb" ★追加
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED



しかし、

ビルドすると、Debug や Release 毎に exe の隣に tlb ファイルができる。(デフォルトの設定では)


リソースエディタで、Condisionの設定をした。

↓Visual Studio での見た目。

かに太郎、ただいま開発中
同じ名前で登録すると、エラーになったので、名前を変えました。

rcファイルをエディタで見ると、


"#ifdef _DEBUG\r\n"
"1 TYPELIB ""Debug\\hoge.tlb""\r\n"
"#else\r\n"
"1 TYPELIB ""Release\\hoge.tlb""\r\n"
"#endif\r\n"



#ifdef _DEBUG
1 TYPELIB "Debug\\hoge.tlb"
#else
1 TYPELIB "Release\\hoge.tlb"
#endif



あれ?


IDR_TYPELIB2 とか、3 は、どこ行った?

検索したら、apsファイルに覚えてた。こいつは、ソース管理してないぞ!

他のPCではどうなるのか?

続きは、またこんど。