質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

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

Q&A

解決済

2回答

1486閲覧

LNK2019のエラー、VSコマンドプロンプト上からのコンパイルについて

gazinn

総合スコア13

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

C++

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

0グッド

0クリップ

投稿2018/09/28 06:36

前提・実現したいこと

以下のサイトのプログラムを実行したいと考えています。
http://daily.belltail.jp/?p=1153
こちらのサイトではLinux上でプログラムを動作させているようでしたが、Windows8.1上でVisualStudio2015とOpencv3.1を用いてデバッグしたところ以下のエラーが発生しました。

発生している問題・エラーメッセージ

LNK2019 未解決の外部シンボル "double * __cdecl lsd(int *,double *,int,int)" (?lsd@@YAPEANPEAHPEANHH@Z) が関数 main で参照されました。

プログラムを改変した場所

imreadで読み込む部分のみ改変しました。

元のコード img = cv::imread(argv[1], 0); 改変後のコード img = cv::imread("lena.jpg", 0);

試したこと    

実行方法 Linuxの場合のコンパイルと実行は g++ prog.cpp lsd.c -lopencv_core -lopencv_highgui -O3 ./a.out hoge.jpg

サイト上のこの箇所が引っかかってると考え、visualstudioのコマンドプロンプトからのコンパイルを試しているのですが、このあたりの知識が乏しいためなかなかうまくいきません。

補足情報(FW/ツールのバージョンなど)

ソースプログラム(prog.cpp)、読み込む画像(lena.jpg)、lsd.c、lsd.hは同じフォルダ内に格納しています。

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

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

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

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

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

tiitoi

2018/09/28 07:17

CMake + Visual Studio でやってみましたが、確かにリンクエラーになりますね。lsh.c をソースコードに含めているんですが、定義されてないとなりますね。
guest

回答2

0

ベストアンサー

lsd.c のファイルを lsd.cpp へ変更しコンパイルした後にlinkしてみてください。
VSは拡張子で拡張の判断をしているので、別物として扱います。( c or c++)

または、拡張子を変えるのが嫌な場合はlsd.hで定義されている関数を以下のようにすれば大丈夫かと。

#ifdef __cplusplus extern "C" { #endif double *lsd(...); #ifdef __cplusplus } #endif

投稿2018/09/28 08:03

編集2018/09/28 09:28
red_bb

総合スコア71

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

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

gazinn

2018/09/29 10:31

拡張子をcppに変更することで上手く動きました。c++とcのコンパイルの違いが原因だったようですね。ありがとうございました。
guest

0

lsd.cのファイル名をlsd.cppと変更することで解決しました。
このあたり(参考:CとC++の間で関数や変数を共有する)の問題だったようです。

投稿2018/09/29 10:34

gazinn

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問