c++ - 为什么编译器给出未定义的引用错误
问题描述
我有一个头文件定义db.hpp
如下:
#ifndef PMT_DB_H
#define PMT_DB_H
#include <leveldb/db.h>
#include <vector>
#include <map>
class DBConnection {
private:
std::string db_file_;
leveldb:: DB* db_;
leveldb::Status status_;
std::map<std::string, std::string> uncommitted_;
public:
DBConnection(const std::string &db_file);
// Other functions
};
#endif
我的db.cpp
班级如下:
#include "db.hpp"
#include <leveldb/write_batch.h>
#include <string>
DBConnection::DBConnection(const std::string &db_file) {
db_file_ = db_file;
leveldb::Options options;
options.create_if_missing = true;
status_ = leveldb::DB::Open(options, db_file, &db_);
}
// other functions
这是我的主文件的patricia-merkle-trie.cpp
样子:
#include <iostream>
#include "core/db.hpp"
void say_hello(){
std::cout << "Hello, from patricia-merkle-trie!\n";
}
int main() {
say_hello();
const std::string db_path_ {"/tmp/testdb"};
DBConnection db_connection = DBConnection(db_path_);
// Rest of the code
}
我尝试使用以下命令编译它:
g++ patricia-merkle-trie.cpp -o pmt_test -pthread -L/usr/local/lib -lleveldb -std=c++14
它给了我如下错误:
/tmp/ccH2lHTf.o: In function `main':
patricia-merkle-trie.cpp:(.text+0x87): undefined reference to `DBConnection::DBConnection(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
我知道这是一个链接器错误,但不明白为什么会出现这个错误。我已经将内容字符串定义为构造函数的参数,构造函数的定义和声明完全一样。那么为什么它将对构造函数的调用显示为两个参数化的呢?
解决方案
推荐阅读
- c# - 检测新创建的表单何时关闭
- tkinter - tkinter 创建粘贴按钮
- c++ - 使用在不同目录中创建的共享库
- macos - 如何修复“无法建立与 adb 的连接”?
- telegram - Telegram Bot 文件下载突然响应 403
- python - 如何在 Python/Pandas 中读取 .csv 文件,其中逗号(,)是分隔符并且也出现在列名中?
- php - Nginx 在 Windows 上使用 Docker 指向错误的目录
- javascript - 反应中的缩略图组件错误
- python - Python3 OSError:[Errno -9988] 流已关闭
- c# - ConfigurationBuilder 在天蓝色功能中不起作用