マクロ 'HELLO' が .cpp ファイルに定義されていて、そこから .tlb ファイルを作成したとします。この .tlb ファイルを別の C++ プロジェクトにインポートすると、そのマクロにアクセスできますか?
デフォルトでは、マクロが .c ファイルで定義されている場合、スコープはそのファイル内にあります。マクロが .h ファイルで定義されている場合、マクロをインクルードするすべてのユーザーがマクロにアクセスできます。.tlbファイル経由でも動作が同じかどうか疑問に思っています.../
タイプ ライブラリは、コードではなく、型情報 (インターフェイスとクラスの宣言、typedef、その他のメタデータ) のみを格納します。コードの実装は、それぞれのライブラリ (DLL) またはサーバー (EXE) 内で定義されます。これは、タイプ ライブラリがクライアントにコードの場所を伝えるだけであることを意味します。コードは提供しません。これが、マクロを tlb にエクスポートできない理由です。
Aschratt が言ったように、マクロはタイプ ライブラリに保存されません。ただし、マクロが整数定数の場合は、IDL ファイルで列挙型を使用できます。
enum Colors
{
White = 1,
Yellow = 2,
BLue = 3
}
これはすべての言語で機能します。たとえば、C# でタイプ ライブラリを使用する場合、列挙型は C# 列挙型として表示されます。
また、タイプ ライブラリが特定の C++ クライアントによってのみ使用されることを意図している場合は、cpp_quote IDL 属性を使用して、生成されたヘッダーにコードを出力し、#import を使用して生成する代わりに、#include ディレクティブを使用してそのヘッダーを含めることができます。タイプ ライブラリに基づく新しいヘッダー。