C 命令上的符号查找错误

C 命令上的符号查找错误,c,C,我尝试在键盘驱动程序中编写一些代码,这是一个第三方软件,看起来可以在插件文件中运行我尝试执行的命令,该插件文件与命令需要发送到的守护进程一起编译。命令如下所示 g15_send_cmd (g15screen_fd,G15DAEMON_MKEYLEDS,mled_state); 我正在使用并试图在中运行命令的代码(它作为带有守护进程的插件编译。在未编译的源代码中,它是 “g15daemon/plugin/g15_plugin_uinput.c” 定义命令的文件位于中 (链接) 由于各种原因,g

我尝试在键盘驱动程序中编写一些代码,这是一个第三方软件,看起来可以在插件文件中运行我尝试执行的命令,该插件文件与命令需要发送到的守护进程一起编译。命令如下所示

g15_send_cmd (g15screen_fd,G15DAEMON_MKEYLEDS,mled_state);
我正在使用并试图在中运行命令的代码(它作为带有守护进程的插件编译。在未编译的源代码中,它是

“g15daemon/plugin/g15_plugin_uinput.c”

定义命令的文件位于中 (链接)

由于各种原因,g15macro(第三个软件)是从守护进程外部运行的,我不想(也不能)使用它,其中一个原因是按键时命令的执行速度

因此,程序像这样编译似乎没有错误。但是如果我上面指定的代码激活,驱动程序(守护进程)就会崩溃

g15daemon:符号查找错误: /usr/lib/g15daemon/1.9.5.3/plugins/g15plugin_uinput.so:未定义 符号:g15\u发送\u命令

我做错了什么,或者我遗漏了什么?(如果插件文件中的代码被switch命令破坏了,我很抱歉,但我不知道如何做得更好,因为我对C不太了解,我身后只有Py和C#)

编辑:给出了解决方案


但是我不知道如何添加链接器标志,因为它链接到正在编译的程序的一部分,它甚至可以工作吗?

你忘了将你的插件链接到
g15daemon_client
库。解决这个问题的简单方法是将
-lg15daemon_client
添加到链接器标志中。

你的意思是“包括”这一行吗44@Rabcor:没有,include只声明一个函数(即让编译器知道它存在于某个地方).但是实际的二进制代码存在于一个库中,你应该与之链接。啊,我明白了,我想,我怎么才能找到哪个库呢?我想我包括了g15macro.c所做的所有与之相关的东西。@Rabcor:我刚刚告诉了你哪个库。如果你指的是一般情况,你必须阅读你使用的API文档,它告诉了libra什么您必须链接的ries(如果有)。好吧,我想了很多,但我的问题是libg15daemon_client.la还不存在,因为它是我正在编译的程序的一部分。