VB用DLLをdefファイルもAliasも使わず作成するには

解決


nao  2007-01-26 05:51:36  No: 64287

VC++で作成したDLLをVBで使用しています.
今はdefファイルを使わずにDLLを作成し,VBでAliasを使って使用しています.

標準モジュールに

Declare Function sum Lib "dllmake.dll" Alias "_sum@8" (ByVal a As Long, ByVal b As Long) As Long

のような感じで書いています.これをAliasをなくして,

Declare Function sum Lib "dllmake.dll"  (ByVal a As Long, ByVal b As Long) As Long

のような形で使用したいのですが,可能でしょうか.

また,DLLを作成時にdefファイルを使用すると下のやり方でも可能でした.
defファイルもAliasも使わずにDLLを使用することは可能なのでしょうか.


Blue  2007-01-26 08:44:55  No: 64288

たぶん無理。


Blue  2007-01-26 08:46:02  No: 64289

追記)
それができればdefファイルの意味ないですから。


Blue  2007-01-26 09:22:31  No: 64290

ちなみに Alias を使うけど"エントリポイントの序数"を指定する方法もある。
結局いくつになっているのかDependency Walker等で確認する必要があるけど。

詳しくはDeclareをMSDNで調べてください。

これもつかえないなら、
・なんでdefファイルを使えないのか
・なんで Alias を使えないのか
というのを明確にしてください。


Blue  2007-01-27 02:45:35  No: 64291

>たぶん無理。
調べてみたところ
一応 VC 同様 LoadLibrary + GetProcAddress で
対象の関数のアドレスを取得して実行できるには出来るらしい。
http://nienie.com/~masapico/doc_FuncPtr.html

ただ、こんなめんどくさいことやるのであれば素直にdefファイルやAliasを
使うべきでしょう。

個人的に気になるので、1つ上のレスの質問には回答してほしいです。
(前回のdefファイルを使わないでDLLを使う方法のスレ(VB掲示板)でも回答もらっていないですし。)


オショウ  2007-01-27 04:21:52  No: 64292

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vccore/html/vcconimportingfunctioncallsusing__declspecdllimport.asp

こちらをご参照下さい。
厳密には、.defを使わないでも可能です。

以上。


Blue  2007-01-27 05:37:42  No: 64293

>オショウさん
ちょっと理解できません。
こうすることで「VB」からAlia指定なしでDLL内の関数が使えるのでしょうか?


nao  2007-01-27 10:16:02  No: 64294

> ・なんでdefファイルを使えないのか
> ・なんで Alias を使えないのか

defファイルもAliasも使わずにDLLの作成ができると便利だと思ったんですが、自分でもいろいろ調べたのですが、やはり無理そうです。
Blueさん、ありがとうございます。
難しいことはせずに、defファイルを使用します。

オショウさんのやり方はちょっとぼくには理解できないです。
そのやり方だと、Dependency Walker等で確認する必要があると思うのですが。
ぼくの最初の言い方がまずかったと思うのですが、Aliasを使わずにというよりかは、ファンクション名だけで実行可能かという質問でした。
次回からはもっと詳しく書くようにします。
調べてもらったのにすみません。

Blueさん、オショウさん、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加