現在、古い owl-c++-builder-projekt を XE2 と owlnext を使用するように移植しようとしています。古いファイルでは、単純に行を呼び出すことができました
(FARPROC)LP_I2COpen = GetProcAddress(Hi_I2C, "I2COpen");
LP_I2Open が定義されている間
#ifdef WIN32
#define CALLING_CONVENTION __stdcall
#else
#define CALLING_CONVENTION far pascal
#endif
int CALLING_CONVENTION (*LP_I2COpen)(HWND hndl,HINSTANCE hInstance, struct I2C_PROP far *ps);
#ifdef _WIN64
typedef INT_PTR (FAR WINAPI *FARPROC)();
#else
typedef int (FAR WINAPI *FARPROC)();
#endif
WINBASEAPI FARPROC WINAPI GetProcAddress(...
これらのコードブロックは、実際には複数のファイルからのものです。この順序は直感的だと思いました。
今、必要に応じてこれを書き直すのにいくつかの困難があります。左側は値を返す変換方法として理解されるようになりましたが、特定の値に割り当てることができないため、「L-Value expected」エラーがスローされます。ただし、FARPROC を LP_I2COpen に適合するものに変換する方法がよくわかりません。変換せずに試行すると、次のエラーがスローされます。
[BCC32 Fehler] Dio.cpp(2906): E2034 Konvertierung von 'int (__stdcall *)()' nach 'int (__stdcall *)(HWND__ *,HINSTANCE__ *,I2C_PROP *)' nicht möglich
それで、私がこの行で行っている間違いを誰か知っていますか?
(FARPROC)LP_I2COpen = GetProcAddress(Hi_I2C, "I2COpen");
よろしく、ジュリアン