如何解决继承omnet++ INET类的简单模块出现重复符号构建错误的原因是什么?
我将 omnet++ 6.0 和 INET 4.3 与 gcc 编译器一起使用。我尝试制作一个继承 INET 类的简单模块,如下所示,导致在构建时出现重复的符号错误。我不知道为什么。代码尽可能简单,只是为了揭示构建错误。该方法是否缺少任何重要的东西?
在.cc 文件中添加Define_Module() 时,出现重复符号构建错误。构建错误信息部分如下:
../../inet4.3/src/inet/common/packet/tag/SharingRegionTagSet.h:318:55: warning: 'const inet::SharingRegionTagSet::RegionTag<inet::TagBase>& inet::SharingRegionTagSet::getRegionTag(int) const' redeclared without dllimport attribute after being referenced with dll linkage
318 | inline const SharingRegionTagSet::RegionTag<TagBase>& SharingRegionTagSet::getRegionTag(int index) const
| ^~~~~~~~~~~~~~~~~~~
../../inet4.3/src/inet/common/packet/tag/SharingRegionTagSet.h:323:54: warning: 'const inet::SharingRegionTagSet::RegionTag<inet::TagBase> inet::SharingRegionTagSet::getRegionTagForUpdate(int)' redeclared without dllimport attribute after being referenced with dll linkage
323 | inline const SharingRegionTagSet::RegionTag<TagBase> SharingRegionTagSet::getRegionTagForUpdate(int index)
| ^~~~~~~~~~~~~~~~~~~
Creating executable: ../out/gcc-release/src/hdc.exe
lld-link: error: duplicate symbol: virtual thunk to inet::queueing::PacketFilterBase::getConsumer(omnetpp::cGate*)
>>> defined at ../out/gcc-release/src/my8021qTagEpdHeaderChecker.o
>>> defined at libINET.dll
对应的ned文件“my8021qTagEpdHeaderChecker.ned”是..
import inet.linklayer.ieee8021q.Ieee8021qTagEpdHeaderChecker;
simple my8021qTagEpdHeaderChecker extends Ieee8021qTagEpdHeaderChecker //like IIeee8021qTagEpdHeaderChecker
{
parameters:
@class(inet::my8021qTagEpdHeaderChecker);
@display("i=block/checker");
}
头文件“my8021qTagEpdHeaderChecker.h”是
#include "inet/linklayer/ieee8021q/Ieee8021qTagEpdHeaderChecker.h"
namespace inet {
class my8021qTagEpdHeaderChecker : public Ieee8021qTagEpdHeaderChecker
{
protected:
// virtual void processpacket(Packet *packet) override;
};
} // namespace inet
和.cc文件“my8021qTagEpdHeaderChecker.cc”被制作为
#include "my8021qTagEpdHeaderChecker.h"
namespace inet {
Define_Module(my8021qTagEpdHeaderChecker);
}
解决方法
这可能是文件或 INET 中头文件的顺序问题。尝试将 INETDefs.h 文件作为第一个包含在所有头文件中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。