我正在尝试在键盘驱动程序中执行一些代码,这是一个看起来像 this 的第三方软件。可以在插件文件中运行我尝试执行的命令,该文件与命令需要发送到的守护进程一起编译。该命令如下所示。
g15_send_cmd (g15screen_fd,G15DAEMON_MKEYLEDS,mled_state);
here's我正在使用并尝试运行命令的代码(它与守护程序一起编译为插件。在未编译的源代码中,它是
“g15daemon/plugin/g15_plugin_uinput.c”
定义命令的文件位于 (关联) "g15daemon/libg15daemon_client/g15daemon_clinet.h"
而 g15macro(第三个软件)由于各种原因从守护进程外部运行,我不想(而且几乎不能)使用它,其中之一是按下按键时命令的执行速度。
所以程序编译起来似乎没有错误。但是如果我上面指定的代码激活,驱动程序(守护进程)就会崩溃,给出
g15daemon: symbol lookup error: /usr/lib/g15daemon/1.9.5.3/plugins/g15plugin_uinput.so: undefined symbol: g15_send_cmd
我做错了什么或者我在这里错过了什么? (如果插件文件中的代码被该 switch 命令弄得很难看,我很抱歉,但我不知道如何做得更好,因为我根本不了解 C,我身后只有 Py和 C#)
编辑:给出了解决方案
但我不知道如何添加链接器标志,因为它链接到正在编译的程序的一部分,它还能工作吗?
最佳答案
您忘记将您的插件与 g15daemon_client
库链接。修复此问题的简单方法是将 -lg15daemon_client
添加到链接器标志。
关于c - 命令上的符号查找错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15959333/