我试图编译并运行一个.cpp文件,该文件包括一个头文件并使用一个名为“ sFnd”的命名空间。包含的头文件由名称空间定义和带有已声明但未定义函数的类组成。我使用了相对路径来包含头文件,并且我确信该路径是正确的。
文件发布在我的github上。我要编译的文件是“ HelloWorld.cpp”,该文件位于SDK_Examples / HelloWorld中。
最初,HelloWorld.cpp文件未使用pupSysCls.h文件的相对路径。没有相对路径的编译给了我一个致命的错误。对其进行更改会导致我遇到的链接器错误。
有人告诉我,这个SDK对于Windows更好,可以在Ubuntu 16.04上运行(这是我的目标),为了使其运行,我必须链接一些库。这是由开发SDK(teknic)的公司告诉我的。我对图书馆链接进行了一些研究,但没有发现任何可以帮助我的东西。也许我缺少一些东西。
g++ -std=c++14 -g -Wall HelloWorld.cpp
HelloWorld.cpp: In function ‘int main(int, char**)’:
HelloWorld.cpp:42:50: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘std::vector<std::__cxx11::basic_string<char> >::size_type {aka long unsigned int}’ [-Wformat=]
printf("Found %d SC Hubs\n", comHubPorts.size());
^
/tmp/ccIP1bY9.o: In function `main':
/home/arr/Desktop/teknic/sFoundationPkg/SDK_Examples/HelloWorld/HelloWorld.cpp:31: undefined reference to `sFnd::SysManager::SysManager()'
/home/arr/Desktop/teknic/sFoundationPkg/SDK_Examples/HelloWorld/HelloWorld.cpp:41: undefined reference to `sFnd::SysManager::FindComHubPorts(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)'
/home/arr/Desktop/teknic/sFoundationPkg/SDK_Examples/HelloWorld/HelloWorld.cpp:46: undefined reference to `sFnd::SysManager::ComHubPort(unsigned long, char const*, _netRates)'
/home/arr/Desktop/teknic/sFoundationPkg/SDK_Examples/HelloWorld/HelloWorld.cpp:52: undefined reference to `sFnd::SysManager::PortsOpen(unsigned long)'
/home/arr/Desktop/teknic/sFoundationPkg/SDK_Examples/HelloWorld/HelloWorld.cpp:55: undefined reference to `sFnd::SysManager::Ports(unsigned long)'
/home/arr/Desktop/teknic/sFoundationPkg/SDK_Examples/HelloWorld/HelloWorld.cpp:61: undefined reference to `sFnd::SysManager::PortsClose()'
/home/arr/Desktop/teknic/sFoundationPkg/SDK_Examples/HelloWorld/HelloWorld.cpp:31: undefined reference to `sFnd::SysManager::~SysManager()'
/home/arr/Desktop/teknic/sFoundationPkg/SDK_Examples/HelloWorld/HelloWorld.cpp:31: undefined reference to `sFnd::SysManager::~SysManager()'
collect2: error: ld returned 1 exit status
在此先感谢您的提示/建议!