1

Windowsで偽のopengl32.dllを作成して、OpenGL呼び出しをキャプチャしようとしています。DLLを単純なOpenGLアプリケーションと同じディレクトリに置いて実行すると、次のエラーが発生します。

プロシージャのエントリポイントglMap1fがダイナミックリンクライブラリOPENGL32.dllに見つかりませんでした

これは奇妙なことです。これを含め、すべてのOpenGL呼び出しのコードにダミー関数があるからです。私のヘッダーファイルには次のものがあります。

void __declspec(dllexport) glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);

およびソースファイル内:

void  glMap1f (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points){}

また、コンパイラが最適化していないことは間違いありません。テキストエディタでDLLを見ると、「glMap1f」というテキストが見つかります。

これを引き起こしている可能性がありますか?また、Visual Studioで実際のシステムDLLをオーバーライドするDLLをデバッグする方法がよくわからないため、これ以上の情報を取得できませんでした。

4

1 に答える 1

6

extern "C"コンパイラが名前マングリングを使用しないようにするには、glMap1fの宣言の前に置く必要があります。

于 2012-12-03T20:49:56.567 に答える