1
inetから単純なモジュールを拡張しようとすると、 "再宣言されました"や "クラスが登録されていませんでした。モジュールをinet.srcディレクトリの外に拡張することも可能ですか?inetから簡単なモジュールを拡張するには?
は
package myproject.linklayer;
import inet.linklayer.contract.IMACProtocol;
import inet.linklayer.base.MACProtocolBase;
simple MyMac extends MACProtocolBase like IMACProtocol
{
parameters:
@display("i=block/rxtx");
@class(MyMac);
}
MyMac.h
#ifndef __INET_MYMAC_H
#define __INET_MYMAC_H
#include "inet/linklayer/base/MACProtocolBase.h"
#include "inet/linklayer/contract/IMACProtocol.h"
using namespace inet;
namespace inet { } // namespace inet
class INET_API MyMac : public MACProtocolBase, public IMACProtocol
{
public:
MyMac();
virtual ~MyMac();
virtual void initialize(int stage) override;
};
#endif /* __INET_MYMAC_H */
MyMac.cc
#include "MyMac.h"
using namespace inet;
namespace inet {} // namespace inet
Define_Module(MyMac);
MyMac::MyMac() {}
MyMac::~MyMac() {}
void MyMac::initialize(int stage)
{
MACProtocolBase::initialize(stage);
}
感謝。 MyMac.ccでは、まだ2つのエラーが発生します。 Define_Module(MyMac); // 'inim :: MyMac :: MyMac' 'dllimport'属性なしで再宣言されました:以前の 'dllimport'は無視されました[-Winconsistent-dllimport]と未定義のリファレンスは '_imp___ZTIN4inet5MyMacE 'への未定義の参照です。 '_imp___ZTVN4inet5MyMacE ' –
クラス宣言から' INET_API'を削除し、 'NED'ファイルのクラスに名前空間を追加して、プロジェクトをきれいにして再構築します。 –