Visual C++ 2017の下では、GLFW 3.2.1のコアルーチン(glfwInit()
、glfwWindowShouldClose()
、glfwTerminate()
...のような)を持つプロジェクトDLLがあります。これらのメソッドは、RenderLoopという名前の静的クラスにカプセル化されています。それはGLADとGLMも使用します。 反対側では、同じソリューションでRenderLoopメソッドを呼び出すEXEプロジェクトアプリケーションがあります。OpenGL GLFW GLADはプロジェクト間で共有しますVisual C++
すべてがうまくいき、exeを起動し、ウィンドウが作成され、ループが実行されています... 初期化後、EXE内でいくつかのgl関数(glGenVertexArrays
など)を呼び出そうとします。私はアクセス違反例外を取り除くことはできません。
このgl関数をDLLに入れると、すべて正常に動作します。私はEXEに入れて、それはクラッシュします。 DLLとEXEの間でOpenGLを共有する "トリック"はありますか?
わからない初期化した後、DLL内のgladLoadGLLoaderへの呼び出しを追加し、ロビンソンを示唆しましたか?私は、DLLを読み込むと、魔法のように、GLADがdllで設定したすべての関数ポインタを与えるとは思わない。 – Robinson
はい、そうです、gladLoadGLLoaderへの呼び出しを追加しました。それはトリックでした 多くのありがとう! –