Any型の2005への移植について

解決


なる  2008-02-01 18:39:06  No: 144368

QR2Dllを使用していた6.0のプログラムを2005へ移植しようとしています

6.0の書式
Declare Function QRmodel2 Lib "QR2DLL.dll" _
(ByRef lngOriginal As Any, ByVal lngOriginalLength As Long, _
ByVal lngQRversion As Long, ByVal lngErrorLevel As Long, _
ByRef lngResult As Any) As Long

Cのライブラリ
QR2DLL_API long __stdcall QRmodel2(long *lngOriginal, long lngOriginalLength, long lngQRversion, long lngErrorLevel,long *lngResult);

とポインタで引き渡されていて移植の方法がよくわかりません

(<MarshalAs(UnmanagedType.AsAny)>やIntPtr等を使用するような記述があるサイト等あったので試したのですが動作はしませんでした
私の知識では答えを導き出せそうにありませんのでせめてヒントだけでも
よろしくお願いします


魔界の仮面弁士  2008-02-01 19:34:26  No: 144369

> とポインタで引き渡されていて移植の方法がよくわかりません
QR2DLL というものは始めて知りましたが、vector でダウンロードした
VB6 サンプルを見る限り、こんな感じでしょう。

Module Module1

  Declare Function QRmodel2 Lib "C:\QR2DLL.dll" _
     (ByRef Original As Integer, _
    ByVal OriginalLength As Integer, _
    ByVal QRversion As Integer, _
    ByVal ErrorLevel As Integer, _
    ByRef Result As Integer) As Integer

  Sub Main()
    'データ
    Dim strDummy As String = "TEST"
    Dim intOriginalLength = strDummy.Length
    Dim intOriginal(intOriginalLength - 1) As Integer
    For n As Integer = 0 To intOriginalLength - 1
      intOriginal(n) = Asc(strDummy(n))
    Next

    '結果を受け取るための配列
    Dim intQRversion As Integer = 1
    Dim intErrorLevel As Integer = 2
    Dim intCell As Integer = intQRversion * 4 + 17
    Dim intResult(intCell * intCell - 1) As Integer

    Dim intReturn As Integer = QRmodel2( _
      intOriginal(0), intOriginalLength, _
      intQRversion, intErrorLevel, intResult(0))

    '以下、intResult を画像化する処理に続く
  End Sub

End Module


なる  2008-02-01 20:22:18  No: 144370

解決しました。ありがとうございました


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

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






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