VBからでも呼び出せるようにVC++でDLL(APIのようなもの)を作るには?

[戻る]
かりろ 2001/06/14(木) 13:33:17
VC++の勉強を始めたばかりの新参者です。VBのキャリアはかなりあります。
さて、今回タイトルのようにVBでも使えるAPIをVC++で作りたいのです。
VBではサポートされていないデータ型をアーギュメントとするAPIを使わなければ
ならなくない、そのミドルというか、橋渡しをするAPIを作成したいと思っています。
簡単なヒントで結構です。
よろしくお願いします。

ten_bun [E-Mail] 2001/06/14(木) 15:34:09
 OLE、COM、ATL(確か旧い順のテクノロジー)がヒントになると思います。
基礎技術はRPCで、MIDL(言語?)の拡張子odlファイルでインターフェイスを定義します。
C++でいうところの、純粋仮想函数で構成される抽象クラスを応用した技術です。
 まったく初めからやるのであるなら、結構道は険しいかもしれません。オブジェクト指向を
理解し実際にクラスを設計出来るのであるなら理解しやすいことでしょう。私も最近、ある
コンポーネントを設計しなければならず苦労しています。VBは初心者なのでクライアントサンプル
プログラムを組む時はヘルプが無いとお手上げだったりします。VC++で作ったものが、VBで制御
できた時は感動しました。

Niji [E-Mail] [HomePage] 2001/06/16(土) 01:28:27
私もよくやります>VBからDLLを呼ぶ

その時のDLLというのは、ごく単純なもので、
一番旧式のものかとおもわれる方法です。

DLLには静的リンクと動的リンクの大きく分けて2種類ありますが、
今回のようにVBでDLLを呼ぶときは動的にDLLをリンクする方法になります。

その場合のDLLの作り方は、DllMain()に関してはTRUEを返して、
その他の関数は普通につくります。
そして、プロジェクト内に *.def というファイルをいれます。
内容としては、ヘルプをみてもらうと解ると思います。
一応例も書いておきます。

例:)
LIBRARY       hogehoge
DESCRIPTION         "Hoge Hoge Dll"
EXPORTS
         foo                      @1
         bar                      @2

のような感じになります。
あとはビルドをするだけでOKです。
その時にいっしょに生成される*.libファイルはこの場合にかぎり、
使用しません(あしからず)。

古いスレッドには追加発言できません。