LoginSignup
0
0

More than 3 years have passed since last update.

C++ Builder 10.2 Tokyo > TMemoryStream > [ilink32 エラー] Error: 未解決の外部シンボル 'int __fastcall System::Classes::TStream::ReadData<char[1000]>(char[1000]&, int)' が XXX.OBJ から参照されています > IDEのバージョン違いで引数の型が違うようになった

Last updated at Posted at 2019-08-09
動作環境
RAD Studio 10.2 Tokyo Update 3 
Windows 10 v1903 

Error

上記の実装において「ReadStream()使用」の実装を10.2 Tokyoで試そうとした。

int len=1000;

下記のエラーが出た。

[ilink32 エラー] Error: 未解決の外部シンボル 'int __fastcall System::Classes::TStream::ReadData(char[1000]&, int)' が XXX.OBJ から参照されています

対処

NativeInt __fastcall ReadData(char &Buffer, NativeInt Count)/* overload */;

第2引数はint型ではなくNativeInt 型。

lenの値を引数として渡す時にNativeInt型にキャストするとエラーは出なくなった。

APIの変更 (intからNativeIntへ) > XE4から10.2 Tokyoへの移植時の落とし穴

XE4:
http://docwiki.embarcadero.com/Libraries/XE4/en/System.Classes.TStream.ReadData

int __fastcall ReadData(System::WideChar &Buffer, int Count)/* overload */;

Tokyo:
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TStream.ReadData

NativeInt __fastcall ReadData(System::WideChar &Buffer, NativeInt Count)/* overload */;

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0