1

C# .NET 2.0 で COM 呼び出し可能な DLL を作成し、.NET regasm ツールを使用してアセンブリから TLB を作成しました。

Borland C++ Builder 4.0 では、[プロジェクト] -> [タイプ ライブラリのインポート] -> に移動し、そこで DLL のタイプ ライブラリを見つけて、[OK] をクリックしてインポートします。

BCB は、HardwareCheck_TLB.cpp および HardwareCheck_TLB.h ファイルを作成します。

プロジェクトの cpp ファイルで、私が入れた DLL を使用したい: #include "HardwareCheck_TLB.h" を一番上に置きます。

コードでそのタイプのオブジェクトを宣言しようとすると、コードで次のようになります。

次のコンパイラ エラーが発生します: [C++ エラー] Unit1.cpp(22): E2352 抽象クラス 'IHardwareCheck' のインスタンスを作成できません。[C++ エラー] Unit1.cpp(22): E2353 クラス 'IHardwareCheck' は、'__stdcall IHardwareCheck::IsExpress(wchar_t * *,TOLEBOOL *) = 0' のため抽象クラスです。

このエラーを取り除く方法を知っている人はいますか?

ありがとう!

4

2 に答える 2

2

new を使用して COM クラスを作成することはできません。CoCreateInstance システム コール (MSDN を参照) または Borland が提供するラッパー (zer0_ring で言及されているものなど) を使用する必要があります。

于 2009-05-07T21:18:11.597 に答える
0

実行できるいくつかの TCoClassCreatorT<> タイプを生成する必要があります。

CoHardwareCheck::Create(&hc)

Borland が製品と共に配布している tlibimp.exe を確認する必要がある場合があります。私はそのプログラムでこれを経験したことがありますが、Co クラスを生成することはできませんでした。

于 2009-04-23T18:59:31.453 に答える