スクリーンショットを取得する静的ライブラリを開発していますが、OpenGL アプリケーションからスクリーンショットを取得するには特別な処理が必要です。
クライアント アプリケーションがスタティック ライブラリにリンクする場合、ライブラリで使用されるフレームワークを追加する必要があります。たとえば、OpenGL のスクリーンショットを撮る場合などです。クライアントが OpenGLES.framework とリンクしており、OpenGL からのスクリーンショットの取得を動的に有効にしている場合、ライブラリをチェックインしようとしています。
問題は、次のような C 関数を使用しようとするとコンパイル エラーが発生することです。
if(&glReadPixels != NULL) {
glReadPixels(0, 0, size.width, size.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
}
ご覧のとおり、メソッドの存在を確認できますが、リンカー エラーが発生しないように呼び出すにはどうすればよいでしょうか。ライブラリでクライアントをコンパイルすると、次のようになります。
Undefined symbols for architecture i386:
"_glReadPixels", referenced from:
+[TakeScreenshotUtil takeOpenGLScreenshotWithContext:layerSize:] in libScr-iOS.a(TakeScreenshotUtil.o)
私は使用しようとしています
__attribute__ ((weak))
しかし、それは機能しません (何も変わりません)。