は、私は自分のアプリケーションで、以下の機能を持っている:PCharをコンソールに印刷すると、なぜ疑問符が表示されますか?
function GetDeviceChannelInfo_HSI(PortNumber, Address, ChNumber: Integer;
var State: Integer): PChar; stdcall; external DLL_FILENEAME;
私がやりたいことのすべては、コンソールにこの結果を印刷しています。しかし、私がWriteLn
と呼んだとき、私はすべて応答として???????????
です。
私はコンソールがこれを印刷する方法を知らないと仮定しています。多分それはUnicodeか何かであり、それは印刷できませんか?
私はDelphiを初めて使用しています。なぜこれがどうしていいのかわかりません。私は実際にポインタアドレスを印刷していますか?私は本当に知らない。どんな助けもありがとう。
関数の宣言が正しいですか?ほとんどのDLL呼び出しは、それらが満たすバッファを提供するように要求します。あなたはバッファを割り当て、それを渡し、そして戻ってくると、バッファはDLL情報で埋められます。 PCharを返すことは非常に珍しいことです.DLLはメモリを割り当てて呼び出し元のアプリケーションにポインタを返します。ポインタを呼び出すアプリケーションは解放する方法がありません(Delphi/C++ Builderでコンパイルされ、 'ShareMem' )。使用している宣言はどこで手に入りましたか? –
PCharをPAnsiCharに変更すると、問題は解決しません。これは二重ではありません。AnsiからUnicodeへのデルファイの種類を知らなかった人からの約30の他の質問です( 'PChar'は' PAnsiChar'を意味し、今は 'PWideChar'を意味します) –