1

マクロ 'HELLO' が .cpp ファイルに定義されていて、そこから .tlb ファイルを作成したとします。この .tlb ファイルを別の C++ プロジェクトにインポートすると、そのマクロにアクセスできますか?

デフォルトでは、マクロが .c ファイルで定義されている場合、スコープはそのファイル内にあります。マクロが .h ファイルで定義されている場合、マクロをインクルードするすべてのユーザーがマクロにアクセスできます。.tlbファイル経由でも動作が同じかどうか疑問に思っています.../

4

2 に答える 2

3

タイプ ライブラリは、コードではなく、型情報 (インターフェイスとクラスの宣言、typedef、その他のメタデータ) のみを格納します。コードの実装は、それぞれのライブラリ (DLL) またはサーバー (EXE) 内で定義されます。これは、タイプ ライブラリがクライアントにコードの場所を伝えるだけであることを意味します。コードは提供しません。これが、マクロを tlb にエクスポートできない理由です。

于 2013-03-19T10:02:30.343 に答える
1

Aschratt が言ったように、マクロはタイプ ライブラリに保存されません。ただし、マクロが整数定数の場合は、IDL ファイルで列挙型を使用できます。

enum Colors
{
    White = 1,
    Yellow = 2,
    BLue = 3
}

これはすべての言語で機能します。たとえば、C# でタイプ ライブラリを使用する場合、列挙型は C# 列挙型として表示されます。

また、タイプ ライブラリが特定の C++ クライアントによってのみ使用されることを意図している場合は、cpp_quote IDL 属性を使用して、生成されたヘッダーにコードを出力し、#import を使用して生成する代わりに、#include ディレクティブを使用してそのヘッダーを含めることができます。タイプ ライブラリに基づく新しいヘッダー。

于 2013-03-19T11:53:52.403 に答える