0

VisualStudio2008でサードパーティのSDKに基づいてC++MFC DLLを作成しています。SDKには、TLBフォルダー、Libフォルダー(.libのみ)、インクルードフォルダー(.hおよび.hppのみ)、およびBinフォルダー(.hおよび.hppのみ)があります。一部のexe、DLLおよび.axファイル)。次の方法でSDKライブラリをDLLにリンクしようとしました。

  • C / C ++->一般->追加のインクルードディレクトリ-ビン、インクルード、TLBフォルダー(念のため)。
  • リンカ->一般->追加のライブラリディレクトリ-LibおよびBin;
  • リンカ->入力->追加の依存関係-Libフォルダ内の.lib

このようにすると、リンクの問題(宣言されていない識別子など)が原因でコンパイルエラーが発生するため、TLBのインポート行を追加しました。

#import "C:\Path\To\Tlb.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids

これにより、型の再定義に関する別のコンパイルエラーが発生します。

error C2011: '_SYSTEMTIME' : 'struct' type redefinition

私は何が欠けていますか?私はWindowsプログラミングにまったく慣れていません。前もって感謝します。

4

2 に答える 2

2

_SYSTEMTIMEが定義されているとき、<Windows.h>または_SYSTEMTIMEによってもたらされたときに、なぜ再定義されるのかわかりません。

とにかく、#importディレクティブからno_namespacesを削除してみてください。名前空間は、このような名前の衝突を避けるためにあります。

于 2012-09-18T11:08:00.427 に答える
1

すでに定義されているオブジェクトを公開するタイプライブラリをインポートしようとしています。

このライブラリをどこから入手しましたか?

削除できます

no_namespace

ただし、タイプライブラリ内のオブジェクトが他の名前空間内で定義されている場合にのみ役立つ場合があります。

importディレクティブの属性を1つだけ試すこともできます

raw_interfaces_only

それはあなたが達成したい/TLBからインポートしたいものに依存します。

MSDNドキュメント

于 2012-09-18T11:02:45.073 に答える