gpt4 book ai didi

尽管在多个文件中使用 ifndef,C++ 多重定义

转载 作者:可可西里 更新时间:2023-11-01 11:14:31 25 4
gpt4 key购买 nike

<分区>

我只是想澄清一下 - redismodule.h 不是我写的,而是来自 Redis 的 GitHub 存储库

对于某些背景,我正在编写一个 C++ Redis 模块,当我尝试在多个文件中使用它时,我一直在 redismodule.h 上收到链接错误。我可以确认它们的 redismodule.h header 中有一个 ifndef。我主要只使用它们的 header 进行定义,唯一的实现是 foo.cpp 中的 RedisModule_OnLoad 方法。

这是我遇到的错误:

/usr/bin/ld: RedisFunc/bar.cpp.o:/redismodule.h:183: multiple definition of 'RedisModule_Alloc'; RedisFunc/foo.cpp.o:/redismodule.h:183: first defined here

我在第 183 到 306 行收到此错误,我在项目中的以下文件收到此错误:

  • foo.cpp
  • bar.cpp

这是我的项目结构:

Redis函数

  • foo.cpp
  • bar.cpp

Redis源码

  • redis模块.h

foo.cpp 包括:

foo.h

foo.h 包括:

redis模块.h

bar.cpp 包括:

酒吧.h

bar.h 包括:

redis模块.h

我的 CMakeLists.txt 文件:

include_directories(src)
add_executable(redis-server
src/adlist.c
...
src/t_stream.c
)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -pedantic -DREDIS_STATIC= -Wall -W -Wno-missing-field-initializers")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -g -ggdb -rdynamic")

include_directories(RedisFunc)

configure_file(redis.conf redis.conf COPYONLY)

add_library(RedisFunc MODULE
RedisFunc/foo.cpp
RedisFunc/bar.cpp
)

redismodule.h 文件可以在这里查看:

https://github.com/antirez/redis/blob/5.0/src/redismodule.h

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