簡體   English   中英

連接C ++和Postgresql

[英]Connecting C++ and Postgresql

我正在嘗試將C ++連接到Postgres。

我最近用Homebrew安裝了libpqxx,如下所示:

brew install libpqxx

然后,我用以下方法實現了: make DatabaseTest文件上進行DatabaseTest。

我運行了以下簡單程序,但遇到一個奇怪的錯誤,我不確定該怎么辦...

#include <iostream>
#include <pqxx/pqxx>

int main(int, char *argv[])
{
  pqxx::connection c("dbname=company user=accounting");
}

我運行make,它告訴我鏈接器失敗,這對我來說沒有多大意義...這里可能發生什么想法了嗎? 道歉,如果這很簡單,因為我做過C ++已經有一段時間了!

  "pqxx::connection_base::init()", referenced from:
      pqxx::basic_connection<pqxx::connect_direct>::basic_connection(char const*) in DatabaseTest-bdc916.o
  "pqxx::connection_base::close()", referenced from:
      pqxx::basic_connection<pqxx::connect_direct>::~basic_connection() in DatabaseTest-bdc916.o
  "pqxx::connection_base::connection_base(pqxx::connectionpolicy&)", referenced from:
      pqxx::basic_connection<pqxx::connect_direct>::basic_connection(char const*) in DatabaseTest-bdc916.o
  "pqxx::connectionpolicy::connectionpolicy(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      pqxx::connect_direct::connect_direct(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in DatabaseTest-bdc916.o
  "pqxx::connectionpolicy::~connectionpolicy()", referenced from:
      pqxx::connect_direct::~connect_direct() in DatabaseTest-bdc916.o
  "vtable for pqxx::connect_direct", referenced from:
      pqxx::connect_direct::connect_direct(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in DatabaseTest-bdc916.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [DatabaseTest] Error 1

您需要一個makefile,並且需要包含pqxx的鏈接器標志。 在我的linux機器上,鏈接器標志是-lpqxx 請參閱下面的示例makefile。

CXXFLAGS := 
LDFLAGS  := -lpqxx

# Executable output command
$(EXE): $(OBJECTS)
    $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^

# build rule for c++ files
%.o: %.cpp
    $(CXX) -c $(CXXFLAGS) -o $@ $<

當您僅從命令行調用make時,它只是使用可用於該文件的標准命令來構建文件。 這意味着它沒有鏈接,也沒有對其進行優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM