- PR -

C#で作成したライブラリをVB6.0から使用

1
投稿者投稿内容
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2004-03-01 17:47
C#で作成したDLLをVB6.0から使用しています。
DLLはregasmコマンドを使ってレジストリに登録しました。

VB6.0からC#で作成したメソッドを呼び出した場合、
引数が[string]型だと問題なく使用できるのですが、
引数に[long]型や[int]型なのど数値を指定したメソッドの場合、
【型が一致しません】というエラーが表示されます。

VB6.0からC#の[long]型を引数にしたメソッドは呼び出せないのでしょうか?

'********* VB6.0のソース
Dim obj As Class1.cls
Set obj = New Class1.cls
Call obj.Sample1("a", "a", "a") ' この場合メソッドの呼び出し成功
Call obj.Sample2(10, 10, 10) ' この場合メソッドの呼び出し失敗

'********* C#のソース
public class cls{
public void Sample1(string a, string b, string c){
// 処理
}
public void Sample2(long a, long b, long c){
   // 処理
}
}
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2004-03-01 18:35
引用:

VB6.0からC#で作成したメソッドを呼び出した場合、
引数が[string]型だと問題なく使用できるのですが、
引数に[long]型や[int]型なのど数値を指定したメソッドの場合、
【型が一致しません】というエラーが表示されます。



C#(というか.NET)でlong型を使用する局面はあまりないと思いますが、
旧VBでのLong型と混同していませんか?

旧VBでは、Longは32ビット(4バイト)、Integerは16ビット(2バイト)ですが、
C#のlong(=.NETのInt64)は64ビット(8バイト)、int(=.NETのInt32)です。
ポッキー
常連さん
会議室デビュー日: 2004/01/29
投稿数: 43
投稿日時: 2004-03-02 09:05
C#側の引数をint型で宣言し、VB6.0からlong型で呼び出すことで対応することに
しました。
ありがとうございます。

[ メッセージ編集済み 編集者: ポッキー 編集日時 2004-03-02 09:27 ]
1

スキルアップ/キャリアアップ(JOB@IT)