gpt4 book ai didi

c - 解决两个外部库中同名函数的类型冲突

转载 作者:太空狗 更新时间:2023-10-29 17:26:15 25 4
gpt4 key购买 nike

我已将以下库包含到我的代码中。

#include <minix/drivers.h>
#include <curl/curl.h>
#include <sys/stat.h>
#include <time.h>
#include <assert.h>
#include <string.h>

现在我得到以下错误:

In file included from /usr/local/include/curl/curlbuild.h:152
from /usr/local/include/curl/curl.h:34
from xxx.c:2
/usr/pkg/gcc44/lib/gcc/i686-pc-minix/4.4.3/include-fixed/sys/socket.h:134: error: conflicting types for '_send'
/usr/include/minix/ipc.h:152: note: previous declaration was here

据我所知,这意味着 _send 已在两个库中声明(minix/drivers.hcurl/curl.h),我想知道是否有可能解决这个问题或以某种方式解决它?

最佳答案

因为您使用的是 minix,您可以使用 objcopy 修改一个(或两个)库.从手册页:

--redefine-sym old=new
Change the name of a symbol old, to new. This can be useful when
one is trying link two things together for which you have no source,
and there are name collisions.

或者,如果您不需要来自其中一个库的_send:

-L symbolname
--localize-symbol=symbolname
Make symbol symbolname local to the file, so that it is not visible
externally. This option may be given more than once.

当然,您需要相应地更新 header 。我还建议将修改后的库和 header 命名为其他名称,以便清楚地表明您已经修改了它们。

关于c - 解决两个外部库中同名函数的类型冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8917691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com