• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBからCで作成されたDLLへの引数の渡し方)

VBからCで作成されたDLLへの引数の渡し方

このQ&Aのポイント
  • VBからCで作成されたAPI関数への引数の渡し方がわからない
  • C側の引数のデータ型はchar型でポインタ渡しではない
  • VB側はBYTE型で引数を渡す必要があるが、方法がわからない

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

  • ベストアンサー
  • kmb01
  • ベストアンサー率45% (63/138)
回答No.3

> その方法がわかりません。 何が分からないのかよく分かりません。 Declare文に問題はないようなのでおそらく呼び出し時の引数の渡し方が分からないのだと推測して回答しますと、 Windowsの場合char型は-128~127の数値なので 数値100を渡す場合 dim ret as Long ret = KANSU(100) 文字Aの文字コード(65)を渡す場合 ret = KANSU(Asc("A")) などのようにすればいいと思います。

yossie_rin
質問者

お礼

回答ありがとうございます。 実は自己解決していたのですが、結果はご指摘の通りです。文字コードを渡すという意味でした。文字が1文字でByte型で渡すという時点で気づくべきした。。

その他の回答 (3)

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.4

要するにString→Byteに変換しろってこと? 一度ファイルに保存して、 それをバイナリリードして GetステートメントでByte型変数に 落とすってのはどうですか? なんかAPIでありそうだけどね。 ってかあった気がするけどね。

yossie_rin
質問者

お礼

回答ありがとうございました。 自己解決しました。 1バイトの文字を文字コードで渡せばOKでした。 お騒がせしました。

  • MetalKing
  • ベストアンサー率57% (15/26)
回答No.2

> 文字列渡しの場合は、VB側はBYTE型で渡す必要があり、その方法がわかりません。 文字列をByteで渡すんですか? そりゃ無理です

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

VB側 ByVal CHAR As Byte C側 char Mode で問題ないです。 問題があるとしたら、 質問文で、C側の関数の返値がintになっているのに、 VB側がlongになっていることでしょうね。

yossie_rin
質問者

お礼

回答ありがとうございました。 自己解決しました。 1バイトの文字を文字コードで渡せばOKでした。 ちなみに、Cの返値がintでVB側がlongになっているのは、意図的にそうしています。Cでのint型は、VBだとlong型になります。