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等を使用するような記述があるサイト等あったので試したのですが動作はしませんでした
私の知識では答えを導き出せそうにありませんのでせめてヒントだけでも
よろしくお願いします
> とポインタで引き渡されていて移植の方法がよくわかりません
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
解決しました。ありがとうございました
ツイート | ![]() |