0

現在、古い 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");

よろしく、ジュリアン

4

1 に答える 1