キーボード ドライバーでいくつかのコードを実行しようとしています。このようなサード パーティ ソフトウェアは、コマンドを送信する必要があるデーモンと一緒にコンパイルするプラグイン ファイルで実行しようとしているコマンドを実行できます。コマンドは次のようになります。
g15_send_cmd (g15screen_fd,G15DAEMON_MKEYLEDS,mled_state);
これが私が取り組んでいるコードで、コマンドを実行しようとしています(デーモンを使用してプラグインとしてコンパイルされます。コンパイルされていないソースでは
"g15daemon/plugin/g15_plugin_uinput.c"
コマンドを定義するファイルは (リンク) "g15daemon/libg15daemon_client/g15daemon_clinet.h"にあります。
一方、g15macro (第 3 のソフトウェア) は、さまざまな理由でデーモンの外部から実行されますが、これを使用したくない (そしてほとんど使用できない) 理由の 1 つは、キーが押されたときのコマンドの実行速度です。
したがって、プログラムはエラーなしでこのようにコンパイルされます。しかし、上記で指定したコードがアクティブになると、ドライバー (デーモン) がクラッシュし、
g15daemon: シンボル検索エラー: /usr/lib/g15daemon/1.9.5.3/plugins/g15plugin_uinput.so: 未定義のシンボル: g15_send_cmd
私は何を間違えましたか、ここで何が欠けていますか? (そして、プラグインファイルのコードがそのスイッチコマンドによって見苦しくなって申し訳ありませんが、私はCをまったく知らないので、これ以上うまくやる方法がわかりませんでした。私の背後にあるのはPyだけですおよび C#)
編集:解決策が与えられました
しかし、リンカーフラグを追加する方法がわかりません。また、コンパイルされているプログラムの一部にリンクしているため、機能しますか?