4

プロトタイプ:

myFunction( ULONG , *ULONG ),PASCAL

変数:

myArray ULONG, DIM(30)
myStuff ULONG

コード:

...
myFunction(myStuff, myArray)
...

エラー:

一致するプロトタイプはありません-C:..。

プロトタイプ自体に何か問題がありますか、それとも変数を間違って渡しますか?

詳細については、問題の実際の関数はglSelectBuffer(GLsizei、* GLuint)、PASCALです。

ここで、GLSizeiはULONGと同等であり、GLuintはULONGと同等です。

等式がシステムの故障を引き起こしている可能性はありますか?これまでのところ、他の機能をクラリオンと互換性のあるものに適合させることに他の問題はなかったので、私はそうは思いませんが、これは特に非常に面倒です。この関数は、選択データを保持するためのバッファーとして使用するユーザー定義サイズの配列を探しています。バッファを作成して(myArray ULONG、DIM(30)を参照)、配列のアドレスを渡す必要があるため、変数を渡すだけで十分だと思いましたが、これまでのところ、上記のコンパイルエラーのみが発生しています。 。

どんな助けでも大歓迎です。

4

3 に答える 3

3

正しいアプローチは、プロトタイプに[]を入れることです。たとえば、次のプログラムは正常にコンパイルされます。

  PROGRAM


myArray ULONG, DIM(30)
myStuff ULONG

  MAP  
   myFunction( ULONG , *ULONG[] ),PASCAL

  END

  CODE
    myFunction(myStuff,myArray)

myFunction  Procedure(a,b)
  code
于 2011-04-02T14:41:55.187 に答える
2

等しい:

GLsizei             EQUATE(ULONG)
GLuint              EQUATE(ULONG)

プロトタイプ:

glSelectBuffer( GLsizei , *GLuint ),PASCAL

データ:

mySelectionBuffer &STRING
myBufferPointer   &ULONG
curSelection      ULONG

初期化:

mySelectionBuffer &= NEW(STRING(30)) 
myBufferPointer   &= ADDRESS(mySelectionBuffer)

使用する:

![glSelectBuffer(Size of Buffer Array, Pointer to Buffer)
glSelectBuffer(30, myBufferPointer)  

次に、データをキャプチャするには:

...
LOOP i# = 1 TO numHits ![result of glRenderMode(GL_RENDER)]
            curSelection = ADDRESS(mySelectionBuffer) + (SIZE(curSelection) * i#)
.
![Process selection data as needed]
...  

シャットダウン:

DISPOSE(mySelectionBuffer)  

これは問題を処理する最善の方法ではないと主張する人もいるかもしれませんが、結局のところ、コンパイルするだけでなく、データを返した後にOpenGL側でクラッシュしない唯一の解決策でした。それに。手元のタスクを実行するためにメモリで遊ぶのは避けたほうがよかったのですが、他のAPIの関数を扱う場合、それは単に避けられないようです...

于 2011-04-01T15:19:20.253 に答える
1

すべてが失敗した場合、次のように、パラメータのプロトタイプを作成し、変数LONGのを渡すことができますADDRESS

プロトタイプ:

myFunction( ULONG , LONG ),PASCAL

コード:

...
myFunction(myStuff, ADDRESS(myArray))
...
于 2011-04-01T01:22:33.880 に答える