1

ここで他の解決策を確認しましたが、適用されないようです。次のように宣言された関数プロトタイプがあります。

typedef FTC_STATUS(CALLBACK *SPI_SetGPIOsFuncPtr)(FTC_HANDLE ftHandle);

これらは私の構造では次のように使用されます。

struct FTDIFuncs
{
SPI_SetGPIOsFuncPtr SPI_SetGPIOs;
    plus other functions
}

問題の関数は次のように定義されます。

FTC_STATUS WINAPI SPI_SetGPIOs(FTC_HANDLE ftHandle);

関数は次のように構造体に割り当てられます。

ftdiFuncs.SPI_SetGPIOs = reinterpret_cast<SPI_SetGPIOsFuncPtr>(SPI_GetGPIOs);

関数は次のように呼び出されます。

status = ftdiFuncs->SPI_SetGPIOs(ftcHandle)

ただし、リターン時に、上記の実行時エラーが発生します。明らかなチェック:
1. 関数 ptr typedef と関数自体が同じ引数を持っている
2. と の両方がCALLBACKWINAPIあると定義されている__stdcall。いずれにせよ、typedef と関数プロトタイプの両方を両方に変更したWINAPIところ、同じエラーが発生しました。
3. 期待どおりに機能する他の関数を呼び出しますftdiFuncs。上記のfunc と function ptrs
のすべてが、メイン プロジェクトがリンクするライブラリにコンパイルされることは、おそらく指摘する価値があります。ftdi

4

1 に答える 1

0

当たり前!GetGPIO を SetGPIO に変換していました!!! 注意深く見てください: SPI_SetGPIOs = reinterpret_cast(SPI_GetGPIOs)

于 2013-10-30T11:14:41.787 に答える