🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

4740閲覧

LNK2019:未解決の外部シンボル エラーとなってしまう

rikusoso

総合スコア15

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/02/14 03:07

編集2020/02/14 05:28

当方C++未経験、勉強中のため、ご教授ください。

C++言語で製造したアプリを、Visual Studio 2008 を使用してコンパイル・ビルドし、PostgreSQLに接続したいと考えています。

Web検索を行った結果、C++でPostgreSQLに接続するためには、「libpq.lib」を使用すると接続可能ということがわかりました。

下記サイトを参考に、Visual Studioを使用してコンパイルすることはできました。
リンク

コンパイルが完了し、ビルド(リンク)を行う際に、下記エラーとなってしまいました。(~~の部分は関数名です。)

error LNK2019: 未解決の外部シンボル _PQfinish が関数 "public: int __thiscall ~~" で参照されました。

Web検索を行い、下記対処を行いましたが、解決しませんでした。

前提:作業端末にPostgres 9.4をインストールしました。付属のlibpq.libを使用します。
0. 「プロパティ」⇒「構成プロパティ」⇒「C/C++」⇒「追加のインクルードディレクトリ」
に「C:\Program Files\PostgreSQL\9.4\include」を記載
0. 「プロパティ」⇒「構成プロパティ」⇒「リンカ」⇒「全般」⇒「追加のライブラリディレクトリ」
に「C:\Program Files\PostgreSQL\9.4\lib」を記載
0. 「プロパティ」⇒「構成プロパティ」⇒「リンカ」⇒「入力」⇒「追加の依存ファイル」
に「libpq.lib」を記載

必要な作業等が抜けている等、ご教示いただければ幸いです。

※開発環境
Windows 10 Pro
Visual Studio 2008
PostgreSQL 9.4

※追記 プラットフォームについて
postgreSQL9.4(x86)
Visual Studio 2008 ビルド時(x86)

※リンクの修正、誤字の修正を行いました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rikusoso

2020/02/14 04:02

ご指摘ありがとうございます。 追記しました。
Y.H.

2020/02/14 04:45

windows10もx86ですよね?
Orlofsky

2020/02/14 05:05

教授 → 教示
rikusoso

2020/02/14 05:29

ご指摘ありがとうございます。 修正しました。 windows10は64ビットです。
Y.H.

2020/02/14 05:35 編集

あぁ解決済みだった。 <s>windowsがx64ならインストールされてるのは C:\Program Files(x86) では?</s>
dodox86

2020/02/14 05:38

>Y.H.さん、 そうなのですよね。"C:\Program Files\..." だから、怪しいと思いました。
guest

回答1

0

自己解決

皆様から、プラットフォームについてご指摘頂いた結果、自己解決しましたので報告します。
原因ですが、使用していた「libpq.lib」が32ビット版ではなく64ビット版を参照していたためでした。
32ビット版の「libpq.lib」を参照するようにしたところ、ビルドが完了したことを確認しました。

ケアレスミスで申し訳ございませんでした。

作業用端末には、postgres9.4の64ビット版がインストールされており、誤って64ビット版を参照していました。。。

コメント頂いた方々、ありがとうございました。

投稿2020/02/14 05:33

rikusoso

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問