C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: VB6からVC++6のDLL呼出しについて


(過去ログ 91 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■54684 / inTopicNo.1)  VB6からVC++6のDLL呼出しについて
  
□投稿者/ MUH (5回)-(2010/10/29(Fri) 09:57:22)

分類:[VB6 以前] 

こんにちは。
VB6からVC++6のDLLの呼出しについて教えてください。
下記最下部のCalc_Top部で「DLLが正しく呼び出せません」のエラーが出てしまいます。
呼出し上で何か問題なところがあるでしょうか?
ご回答宜しくお願い致します。

標準モジュール
Public Type Worm_Info
aModule As Double
aAturyokuKaku As Double
aSusumiKaku As Double
aHamotoChokkei As Double
aPitchCircular As Double
aOuterDiameter As Double
aMizoHaba As Double
aSaitanKyori As Double
aKuitigaiKaku As Double
aPts1(127) As Double '出力
aPts2(127) As Double '出力
aPoints_No As Long '出力
aBunkatuSuu As Long
aObjectKind As Long
End Type

Public Type Initial_Parameters
aMaxDevideNumber As Long
aCalc_Tolerance As Double
aShape_Base_Length As Double
aDebugMode As Boolean
End Type

Public Type Correction_Parameters
aCorrection_Kind_Flag As Long
aCorrection_A As Double
aCorrection_B As Double
aPoints_No As Long '出力
aPts1(256) As Double '出力
aPts2(256) As Double '出力
End Type


以下呼出し部(Textは設定済)

Dim nRet As Long
Dim nRet1 As Long
Dim nRet2 As Long
Dim ST_Worm_Info As Worm_Info

Dim ST_Initial_Parameters As Initial_Parameters
Dim ST_Dendum_Correction As Correction_Parameters
Dim ST_Addendum_Correction As Correction_Parameters


With ST_Worm_Info
.aModule = Text11
.aAturyokuKaku = Text12
.aSusumiKaku = Text13
.aHamotoChokkei = Text14
.aPitchCircular = Text15
.aOuterDiameter = Text16
.aMizoHaba = Text17
.aSaitanKyori = Text18
.aKuitigaiKaku = Text19
.aBunkatuSuu = Text20
.aObjectKind = Text21
End With

With ST_Initial_Parameters
.aMaxDevideNumber = Text22
.aCalc_Tolerance = Text23
.aShape_Base_Length = Text24
.aDebugMode = Text25
End With

With ST_Dendum_Correction
.aCorrection_Kind_Flag = 0
    .aCorrection_A = Text26
.aCorrection_B = Text27
End With

With ST_Addendum_Correction
.aCorrection_Kind_Flag = 2
.aCorrection_A = Text28
.aCorrection_B = Text29
End With

nRet = Initial_Parameter_Setting(ST_Initial_Parameters)
nRet1 = Struct_Data_Setting(ST_Dendum_Correction, ST_Worm_Info, ST_Addendum_Correction)
nRet2 = Calc_Top() *******→ここでエラー**********



引用返信 編集キー/
■54685 / inTopicNo.2)  Re[1]: VB6からVC++6のDLL呼出しについて
□投稿者/ shu (130回)-(2010/10/29(Fri) 10:00:54)
No54684 (MUH さん) に返信

C++の関数定義とVB側のDeclare定義が書いてないので分かりません。
引用返信 編集キー/
■54688 / inTopicNo.3)  Re[2]: VB6からVC++6のDLL呼出しについて
□投稿者/ MUH (6回)-(2010/10/29(Fri) 10:45:20)
No54685 (shu さん) に返信
> ■No54684 (MUH さん) に返信
>
> C++の関数定義とVB側のDeclare定義が書いてないので分かりません。


大変申し訳ありませんでした。VB側は以下の通りです。
C++側は非公開(ブラックボックス)なので、現状VB側だけの判断でお願いします

'関数定義
Private Declare Function Calc_Top Lib "HMTS.dll" ()
Private Declare Function Initial_Parameter_Setting Lib "HMTS.dll" (ByRef pData As Initial_Parameters) As Long
Private Declare Function Struct_Data_Setting Lib "HMTS.dll" (ByRef pData1 As Correction_Parameters, ByRef pData1 As Worm_Info, ByRef pData1 As Correction_Parameters) As Long
引用返信 編集キー/
■54690 / inTopicNo.4)  Re[3]: VB6からVC++6のDLL呼出しについて
□投稿者/ shu (132回)-(2010/10/29(Fri) 10:59:27)
No54688 (MUH さん) に返信
> Private Declare Function Calc_Top Lib "HMTS.dll" ()
これが間違っている可能性が高いエラーなのですが、C++側の定義が分からない事には
どうにもならないです。とりあえずCalc_Top() as Longにしてみるとか?
引用返信 編集キー/
■54692 / inTopicNo.5)  Re[4]: VB6からVC++6のDLL呼出しについて
□投稿者/ 774RR (559回)-(2010/10/29(Fri) 11:29:47)
C の仕様書的には「関数定義」と「関数宣言」は別のもの。
で、今回のこの話では、関数定義はいらなくて関数宣言だけわかれば必要十分。

その HMTS.dll に HMTS.h が付随していないか?
extern __declspec(dllimport) int Calc_Top(void); と書かれているヘッダファイルは無いか?
無いと、正しいか誤っているかの判断基準が一切無いので判断不能。
とりあえず関数宣言を探してくれ。
引用返信 編集キー/
■54694 / inTopicNo.6)  Re[5]: VB6からVC++6のDLL呼出しについて
□投稿者/ shu (133回)-(2010/10/29(Fri) 11:48:50)
No54692 (774RR さん) に返信
> C の仕様書的には「関数定義」と「関数宣言」は別のもの。
失礼しましたmm
引用返信 編集キー/
■54698 / inTopicNo.7)  Re[6]: VB6からVC++6のDLL呼出しについて
□投稿者/ MUH (7回)-(2010/10/29(Fri) 13:52:55)
No54694 (shu さん) に返信
Calc_Top() as Longにしてみましたが、「Typeブロック外では無効なステートメントです」のコンパイルエラーとなってしまいました。

No54692 (774RR さん) に返信
HMTS.h は付随していません。HMTS.dllとHMTS.libだけです。
extern __declspec(dllimport) int Calc_Top(void); と書かれているヘッダファイル
を手に入れら得れるように交渉します。

お二人ともありがとうございました。
入手出来たら宜しくお願いします。
引用返信 編集キー/
■54699 / inTopicNo.8)  Re[7]: VB6からVC++6のDLL呼出しについて
□投稿者/ shu (135回)-(2010/10/29(Fri) 14:10:06)
No54698 (MUH さん) に返信
> ■No54694 (shu さん) に返信
> Calc_Top() as Longにしてみましたが、「Typeブロック外では無効なステートメントです」のコンパイルエラーとなってしまいました。
省略して書いたので分かりにくかったですね。
Private Declare Function Calc_Top Lib "HMTS.dll" () as Long
です。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -