2011-10-20 14 views
1

このライブラリを使用するC++ Builderプロジェクトは、http://www.torry.net/authorsmore.php?id=1881(Cipher)です。パスカルで実装された.libのラッパー

  • ソースファイルは(.HPP/.PAS)が含まれている
  • の.libファイルが

が含まれ、それはC++ Builderのライブラリですが、私はCでラッパーを書きたいことをしているように見える++ C++プログラムとC#プログラムで使用するために(単純にこのlibのDLLを作成していた)

私の問題は、私は完全に初心者で、そのようなことをする方法を知らないということです。

私のプロジェクトにlibファイルを含めて、それをラップするにはすべての関数をexternに宣言しますか?

私はいくつかの助けが必要です、ありがとう。

+0

のDLLを作成する上でC++ Builderのヘルプトピックをお読みください。 –

答えて

2

API呼び出しを一致させる必要があり、それは冗長で退屈になります。しかし、私のように見えるのは、あなたのDLLがこの時点でどこからでも使用できるので、その作業は正当なものであると思われます。目標は、C++ Builder/Delphiの世界の外でコンパイラに優しい.pasファイルをコンパイルしているため、C++ Builderプロジェクトをラップすることです。

それは不透明なポインタを受け入れ、「C」の機能を書くことがここで最も柔軟なアプローチであるというのが私の経験をされています

typedef void * MYHANDLE; 

extern "C" MYHANDLE CreateMyObject(void) 
{ 
    MyCppObject * obj = new MyCppObject(); 
    return static_cast<MYHANDLE>(obj); 
} 

/* Calls to your other C++ methods as well */ 

extern "C" void DeleteMyObject(MYHANDLE obj) 
{ 
    MyCppObject * ptr = static_cast<MyCppObject*>(obj); 
    delete ptr; 
} 
関連する問題