C++ Builder 4プロジェクトで使用する必要がある.NET COM DLLを作成しました。インポートタイプライブラリ機能を使用してDLLをインポートすることができます(実際にはビルド時にDLLに付属するTLBファイルをインポートします)。これは、私のC++ Builder \ ImportsフォルダにComponent_TLB.hを作成します。私はその後、私のプロジェクトでは、この_TLBファイルを#includeし、私は次の操作を行うことができるよ:意図したとおりにC++ Builder 4での.NET COM DLLの使用 - 文字列とSystem :: Stringのあいまいさ
TCOM_Create theDLL;
theDLL = CoCreate::Create();
theDLL->FunctionX(paramy);
これは動作します。
Component_TLB.hは、「インポートタイプライブラリ」機能は、(とりわけ)mscorlib含んから作成:
#include "mscorlib_TLB.h"
...私のDLLの信頼性のようです、ここで何がです私はコメントで見つけた:
// DepndLst:
// (1) v2.0 mscorlib, (C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.tlb) **<---**
// (2) v2.0 stdole, (C:\Windows\SysWOW64\stdole2.tlb)
// (3) v4.0 StdVCL, (C:\Windows\SysWow64\STDVCL40.DLL)
問題は、このmscorlibは、私のプロジェクトに含まれているので、私がために使用のように、私は「文字列」タイプを使用することができないということです。次の行:
[C++ Error] Unit1.cpp(23): E2015 Ambiguity between 'String' and 'System::String'.
このmscorlibは、独自の文字列型か何かを持っているように見えます...私が見つけた:
extern const GUID IID__String;
String abc;
は私に次のエラーを..gives
と
extern const GUID CLSID_String;
I私のプロジェクトではString型をたくさん使っていますが、String型ですべての行をコード化せずにSystem :: Stringを使うようにコンパイラを強制するにはどうすればいいですか?
に追加されませんので、私はあなたの提案を試みたが、私は次のエラーを取得、名前空間を使用してください:[C++エラー] utilcls.h(2332):E2029」をIDispatch 'は以前に定義されたクラスまたは構造体でなければなりません。 – jplanglais
申し訳ありませんが、utilcls.hは何であるか分かりません。 –
mscorlib_TLB.hに次のようにインクルードされています:#include –
jplanglais