1
Ich bekomme viele Fehler wie "redeclared" und "Klasse wurde nicht registriert", wenn ich versuche, ein einfaches Modul von inet zu erweitern. Ist es überhaupt möglich, Module außerhalb des Verzeichnisses inet.src zu erweitern?Wie erweitert man ein einfaches Modul von inet?
MyMac.ned
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);
}
Dank. In MyMac.cc bekomme ich noch 2 Fehler: Define_Module (MyMac); // undefinierter Verweis auf '_imp___ZTIN4inet5MyMacE '" MyMac :: MyMac() {//' inet :: MyMac :: MyMac 'redeclared ohne Attribut' dllimport ': vorheriger' dllimport 'ignoriert [-Winconsistent-dllimport] und undefinierter Verweis auf '_imp___ZTVN4inet5MyMacE ' –
Entfernen Sie' INET_API' aus der Klassendeklaration und fügen Sie einen Namespace in eine Klasse in 'NED' Datei ein, säubern und rekonstruieren Sie Ihr Projekt. Ich habe meine Antwort aktualisiert. –