私は特に OpenGL に使用することを目的としたクロスプラットフォーム ウィンドウ ライブラリに取り組んでおり、現在は Linux に焦点を当てています。私は glload を使用して OpenGL 拡張機能を管理しています。これは、後で使用する他のライブラリと一緒に.so
. この `.so は予想どおり動的にロードされていますが、実行時にプログラムは次の出力を返します (読みやすいように手動でラップされています)。
_dist/x64-linux-debug/bin/test: Symbol `glXCreateContextAttribsARB' has \
different size in shared object, consider re-linking
今、明らかに私は再リンクを試み、プロジェクト全体を何度も再構築しました(魔法のようにすべてが良くなることを盲目的に望んでいるだけでなく、テストしています)。プログラムは、期待どおりにログ出力を生成するため、喜んで実行されるようです。nm
「シンボル」が.so
nm _dist/x64-linux-debug/lib64/libvendor.so | grep glXCreateContextAttribsARB
00000000009e0e78 B glXCreateContextAttribsARB
定義されているreadelf
シンボルをよく見ると、次のようになります (ここでも、書式設定のために最初の 3 行を手動でラップしています)。
readelf -Ws _dist/x64-linux-debug/bin/test \
_dist/x64-linux-debug/lib64/libvendor.so | \
grep glXCreateContextAttribsARB
348: 000000000062b318 8 OBJECT GLOBAL DEFAULT 26 glXCreateContextAttribsARB
421: 000000000062b318 8 OBJECT GLOBAL DEFAULT 26 glXCreateContextAttribsARB
1370: 00000000009e0e78 8 OBJECT GLOBAL DEFAULT 25 glXCreateContextAttribsARB
17464: 00000000009e0e78 8 OBJECT GLOBAL DEFAULT 25 glXCreateContextAttribsARB
何を試して調べればよいのか本当にわからないので、これが私が提供できるすべてのことではないかと心配しています。私が言ったように、もっと多くの情報が必要になると確信しているので、私ができることを提供します. プロジェクトのルートからこれらのコマンドを実行しています。