C++ とプラグイン開発は初めてです。私は Unix および Firefox ブラウザで作業しています。というわけで、私は独自のライブラリのいくつかのクラスを使用するプラグインを持っています。問題は、ブラウザがすぐに終了してしまうことです。MyPlugin.so が Firefox のプラグイン フォルダにあるとすぐに、ブラウザを起動することさえできません。ライブラリはビルドされており、それを使用するデスクトップ アプリケーションを強制終了しません。私の推測では、ライブラリを CMake にリンクするのに失敗したか、FireBreath からいくつかのものを含めるのを忘れていました。だからここに私が間違っていると思う2つのことがあります.誰かが私を助けてくれるかもしれません.
1) (間違っていますか?) Cmake とのリンク: プロジェクトのCMakeLists.txtの最後にこれらのいくつかを追加しました。パスは、ライブラリがある場所です。
add_definitions(-L${CMAKE_CURRENT_SOURCE_DIR}/../../../lib/bin)
add_definitions(-I${CMAKE_CURRENT_SOURCE_DIR}/../../../lib/src)
add_definitions(-lcoala64) [name of the library]
add_definitions(-Wl,-rpath=${CMAKE_CURRENT_SOURCE_DIR}/../../../lib/bin)
add_definitions(-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/harfbuzz -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0)
そして、prepmake.sh を使用してビルド ファイルを生成しました。次に、/buid /projects/MyPlugin/CMakeFiles/MyPlugin.dir/ link.txtにフラグを手動で追加しました (より良い解決策がわからないため)。
-L/home/username/swp/dev/lib/bin
-I/home/username/swp/dev/lib/src
-lcoala64 -Wl,-rpath=/home/username/swp/dev/lib/bin
その後、プラグインをビルドできました。ビルドされるので、正しくリンクしたと見なすことができます。しかし、使いたいと思ったらすぐにクラッシュが発生します。
2) ライブラリの使い方が間違っていますか? MyPluginAPI.h に次のように含めます。
#include <string>
#include <sstream>
#include <boost/weak_ptr.hpp>
#include <boost/smart_ptr.hpp>
#include "JSAPIAuto.h"
#include "BrowserHost.h"
#include "X11/X11KryptoKoala.h"
//Include from my own library:
#include "../../../lib/src/Key.hpp"
次の行を MyPlugin.cpp に追加するとすぐに、前述のクラッシュが発生しますが、同じライブラリを使用するデスクトップ アプリケーションでは同じ行が問題なく動作します。
Key key(password_);
これがあまりにも大きなテキストの壁ではなく、誰かが調査して私に答えてくれることを願っています.