我要用到一个比较复杂的库,所以找了sqlite3库练手。虽然最后程序成功运行,但是还是有一些疑问。
我从一个教程上学习,把外部库都放在一个统一的路径,dll文件、头文件、lib文件分别位于其下面一个单独的子目录。
外部库在我机器上同一路径为D:\cpp_ex_libs, sqlite在此文件夹下的目录为:

我设置了全局变量:

为了防止不同项目混乱,我没有把sqlite路径加到setting—compiler setting 下面,而是加到项目的Buld Option的下面:

Buld option-link setting:加入链接库.lib文件

Buld option-Search directories-linker:加入链接库目录

在Buld option-Search directories-compiler以及resource directories:加入头文件目录。
我的程序根本没有调用dll,只是调用了头文件:
#include <iostream>
#include <sqlite/sqlite3.h>
using namespace std;
int main()
{
cout << "Hello sqlite world!" << endl;
return 0;
}
但是此时会报错,提示:
D:\program\cpp\sqlitetest\main.cpp|3|致命错误:sqlite/sqlite3.h:No such file or directory|
我需要在项目—porperties—C/C++ parser option中添加:$(#sqlite)\include,才能引用头文件。
但是引用头文件不用<sqlite/sqlite3.h>的形式,必须使用一下形式:
#include <sqlite3.h>
此时程序正常构建,但是提示找不到dll文件:

我必须把dll文件放到和lib文件一起,或复制到项目文件夹下,编译程序debug或release下就能运行了。
我的问题有几个:
首先,调用一个外部库到底需要设置哪些地方。我现在能够调用外部库,但是有点迷糊。
第二,我如何才能通过<库名/头文件名.h>方式调用头文件。因为我觉得这样才能够知道这个文件不是项目文件,是外部的。
第三,dll文件在库目录下的bin文件夹中,我怎样才能让code::block自己找到它,或把它复制到项目文件夹下。
问题有点多,我存属小白,这个元旦都毁在code::block上了。谢谢各位老大!