• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2010でPC-OP-RS1を読み出すとエラー)

VB2010でPC-OP-RS1を読み出すとエラー

このQ&Aのポイント
  • VB2010からPC-OP-RS1を読み出す際にエラーが発生
  • PC-OP-RS1をカスタム利用するDLLをVB2010で使用しようとしているが、宣言での引数指定がうまくいかずエラーが出ている
  • DLLのソースでは引数の指定はint型で行われており、VB2010での宣言方法が間違っている可能性がある

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

C++のソースを見たのですが,APIに呼び出し規約の記述がありませんでした。 通常,APIにはStdCallを使うのですが,Cdeclとなっています。 なので,採りうる方法は二つ。 ・DLLの方を修正し,APIに「WINAPI」という修飾をつけて再コンパイルする ・VB側を修正し,DllImportを使ったP/Invokeにする。この時,CallingConventionにCdeclを指定する

hiro4400105
質問者

お礼

ありがとうございます。 Dllimportを使ってみた所、エラーが出ず引数を渡す事ができました。 Imports System.Runtime.InteropServices Public Class Class1 <DllImport("pc-op-rs1-control.dll", CharSet:=CharSet.Unicode, CallingConvention:=CallingConvention.Cdecl)> _ Overloads Shared Function Open(ByVal port As Int32) As Integer End Function End Class