DLL から関数をインポートする VB6 のコードがあり、byVal および byRef キーワードを使用しています。そのコードを C# 3.5 に変換したいと考えています。
文字列の Unicode エンコーディングに問題はありますか?
vb6 の「byRef」である変数を C# コードの「ref」変数に宣言する必要がありますか?
関数が文字列を編集できるようにしたい場合は、戻り値がVB6コードによって送信される文字列に「byVal」パラメーターとして入力されることが継ぎ目です。 ? この概念は私の C# コードでも機能しますか?
VB6 の関数宣言をコピーしてみました。パラメーターの型は int、long、string のみです。「byVal」キーワードがあった場所を空のままにし、「byRef」キーワードを C# の「ref」キーワードに置き換えただけで、コードが機能しません。
VB6 コード:
Private Declare Function Foo Lib "Foo_Functions.dll" (ByVal a as String, ByVal b
as Long, ByVal c as String, ByVal d as String, ByVal e as String, ByVal f
as String, ByVal g as Long, ByVal h as String 、ByVal i は文字列として、ByRef j
は Long として、ByRef k は Long として)
整数 として
私のC#3.5翻訳:
[Dllimkport("foo_functions.dll")] public static extern int foo(String a, long b,
string c, string d, string e, string f, long g, string h, stringbuilder i,
ref long j, ref long k );
助けてください、私はすでにこれに丸一日を費やしました:p ....
最後に、自動プロジェクト コンバーター (VB6 から VB.NET 2008 へ) を使用して関数呼び出しを VB.NET ライブラリに変換し、C# リファレンスを使用して呼び出しました。
ありがとう。