2017-04-02 59 views
0

我在我的項目中包含TCPSOcket.h標頭。Inet Socket Omnet ++

但是當我嘗試使用對象

的TCPSocket mysocket;

和建設項目,得到以下錯誤:

任何建議「的TCPSocket沒有在這個範圍內聲明」?

謝謝。

+0

歡迎來到StackOverflow。請幫助我們通過發佈您迄今爲止已嘗試的內容(即未編譯文件的代碼片段)來幫助您。有關其他建議,請參閱:[我如何問](https://stackoverflow.com/help/how-to-ask) – Forty3

回答

0

INET使用C++命名空間inet所以在你的代碼,你應該添加namaspace一個類名之前,例如

inet::TCPSocket mysocket; 

或者你可以在namespace inet把你的整個代碼,例如:

namespace inet { 

    Define_Module(PC); 

    void PC::initialize() { 
     TCPSocket mysocket; 
     // ... 
    } 
} 
0

您使用哪種版本的INET?

如果直接在INET中實現代碼(位於INET src文件夾中的源文件或對現有INET文件的修改),是否確保插入了頭文件的完整路徑?例如,對於INET版本3.5:

#include "inet/transportlayer/contract/tcp/TCPSocket.h" 

這種行爲在當前的OMNeT版本贊成改變,如包含文件深度搜索魔術被刪除(在5.1版本和其測試和發佈候選)與完整的包括從項目根目錄開始的路徑。

如果您有單獨的項目,是否檢查過INET項目是否被引用?此外,包含路徑看起來會有所不同,因爲與分離的INET項目相比,您的源位於不同的根文件夾中。

你在使用命名空間嗎?如果是這樣,你檢查了那裏的不一致嗎?

0

我用OMNET ++ 5.0

我有一個單獨的項目,是的,我引用我的項目的屬性的INET項目。

我的項目和INET在同一個工作區。這是一個小我的代碼,在那裏我使用TCP對象:

#include "PC.h" 
#include "myHeader_m.h" 
#include "TCPSocket.h" 

Define_Module(PC); 

void PC::initialize() 
{ 
    cMessage * reminder = new cMessage("Interval"); 
    ..... 
    ..... 
    ..... 
    //TCPSocket msocket = new TCPSocket(); 
    TCPSocket mysocket; 

} 

這是在生成文件包含路徑

# C++ include paths (with -I) 
INCLUDE_PATH = -I../inet/src -I../inet/src/inet/transportlayer/contract/tcp -I. -Iresults 
相關問題