掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Delphiで作成されたDLLをVBで使用sするには (ID:79005)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> これもDLLが正しく呼出しできないというエラーが発生します。 これは、Declare宣言に誤りがある事を示しています。 データ型や引数の数に誤りが無いかを確認してください。 例えば、 Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Long と書くつもりで、 Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) のようなコードを書いた場合などに、そのようなエラーが発生します。 > 自分は構造体が何か関係しているのではないかと考えているのですが良く判りません。 > Declare文ではByRefで変数を宣言していますがそれだけでは不足なのでしょうか? DLL側の仕様がわからない事には、何とも言えませんね。。。 例えばDLL側が、構造体を値渡しのデータとして要求するような場合は、 ByRefは使えないので、下記の資料のように、ユーザー定義型の各メンバを スタックに積み上げて配置する必要があります。 http://support.microsoft.com/?kdid=161301 > 構造体はinteger型,string型の2種類で構成されています。 これらは、VB6の Integer型、String型の事でしょうか。 その場合はまず、アライメントに気を付けてください。 VBはシングルバイトアライメントになっていないので、たとえば、 A As Integer B As Integer C As String のように、Integerが2つ連続で並んでいる場合は良いですが、 A As Integer B As String C As Integer のように、Integerが奇数個単位で配置されている場合は、2バイト単位ずつ データがずれてしまう可能性があります。 それから、String型フィールドが、固定長なのか自由長なのかも 確認してください。自由長の場合は、DLLの呼び出し前に、 Stringメンバを初期化しておく必要がありますので。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.