【发布时间】:2015-03-16 07:51:29
【问题描述】:
这对你们来说可能是一个愚蠢的问题,但我从来没有 C++ 方面的经验。我正在使用一个开源项目osrm(太棒了)。仍然要请求路由,您必须发出 http 请求。为了减少运行时间,我想围绕代码构建一个包装器并使用命令行调用它。所以我google了一下,发现osrm在编译项目时已经创建了一个静态库(.a文件)。我还找到了piece of code,它为我指明了构建包装器的正确方向。因此,首先我构建了一个简单的 hello world 程序(见下文),其中包含来自该静态库的一些文件。编译我遵循this 教程。 我的目录结构如下所示: ./helloWorld.cpp ./libs/libOSRM.a
编译的命令是这样的:
gcc –static helloworld.cpp –L ./libs –l libOSRM.a
它自己的代码:
#include "Router.h"
#include "boost/filesystem/path.hpp"
#include "ServerPaths.h"
#include "ProgramOptions.h"
#include <InternalDataFacade.h>
#include <viaroute.hpp>
#include <iostream.h>
main()
{
cout << "Hello World!";
return 0;
}
我得到的确切错误:
致命错误:ServerPaths.h:没有这样的文件或目录#include "ServerPaths.h"
【问题讨论】:
-
当您使用
-lNAME选项时,链接器将查找名为libNAME.a的库,因此将您的选项更改为-lOSRM即可找到该库。 -
我上面的评论只是一个假设,因为你没有说你的问题是什么,或者你甚至有有问题。你的问题是什么?请详细说明!
-
我更新了问题。抱歉,如果不清楚。我更新了我的命令,但仍然遇到同样的错误
-
@jorne 你应该给
mainaoint main()添加一个返回类型,特别是因为你返回0
标签: c++ static-linking