エラーLNK2001とLNK1120のエラーが消えなくて困っています
エラーLNK2001とLNK1120のエラーが消えなくて困っています
まず環境はVisualstudio2013でC++のWin10を使用しています。
下記のアンプルプログラムを動かしたいのですが、エラーLNK2001とLNK1120のエラーがでて動きません。プログラム初心者なのでわかる方いれば教えてほしいです。
#include <iostream>
#include <opencv2/opencv.hpp>
#include "lsd.h"
cv::Mat img;
int n_lines;
double* lines;
void change_th_lsd(int nfa, void* dummy)
{
cv::Mat result = img.clone();
for (int i = 0; i < n_lines; i++)
{
const double *line = &lines[i * 7];
if (nfa < line[6])
{
const cv::Point p1(line[0], line[1]);
const cv::Point p2(line[2], line[3]);
cv::line(result, p1, p2, cv::Scalar(0, 0, 255));
}
}
cv::imshow("result_image", result);
}
int main(int argc, char *argv[])
{
//画像をグレースケールとして読み込み
img = cv::imread(argv[1], 0);
//LSD用画像に変換><
double *dat = new double[img.rows * img.cols];
for (int y = 0; y < img.rows; y++)
for (int x = 0; x < img.cols; x++)
dat[y * img.cols + x] = img.at<unsigned char>(y, x);
//LSD処理
lines = lsd(&n_lines, dat, img.cols, img.rows);
//しきい値の最大値と最小値をもってくる
int max_NFA = 0;
for (int i = 0; i < n_lines; i++)
max_NFA = std::max(max_NFA, static_cast<int>(lines[i * 7 + 6]));
//結果描画用画像
cv::cvtColor(img, img, CV_GRAY2RGB);
//結果表示用ウィンドウ
cv::namedWindow("result_image");
cv::createTrackbar("NFA", "result_image", NULL, max_NFA, change_th_lsd);
cv::setTrackbarPos("NFA", "result_image", max_NFA);
//結果表示
cv::imshow("result_image", img);
cv::waitKey(0);
}
エラー内容は、
①error LNK2001: 外部シンボル ""double * __cdecl lsd(int *,double *,int,int)" (?lsd@@YAPEANPEAHPEANHH@Z)" は未解決です。
②error LNK1120: 1 件の未解決の外部参照
この二つです。
参考にしたサイトです。http://daily.belltail.jp/?p=1153
お願いします。
下記のアンプルプログラムを動かしたいのですが、エラーLNK2001とLNK1120のエラーがでて動きません。プログラム初心者なのでわかる方いれば教えてほしいです。
#include <iostream>
#include <opencv2/opencv.hpp>
#include "lsd.h"
cv::Mat img;
int n_lines;
double* lines;
void change_th_lsd(int nfa, void* dummy)
{
cv::Mat result = img.clone();
for (int i = 0; i < n_lines; i++)
{
const double *line = &lines[i * 7];
if (nfa < line[6])
{
const cv::Point p1(line[0], line[1]);
const cv::Point p2(line[2], line[3]);
cv::line(result, p1, p2, cv::Scalar(0, 0, 255));
}
}
cv::imshow("result_image", result);
}
int main(int argc, char *argv[])
{
//画像をグレースケールとして読み込み
img = cv::imread(argv[1], 0);
//LSD用画像に変換><
double *dat = new double[img.rows * img.cols];
for (int y = 0; y < img.rows; y++)
for (int x = 0; x < img.cols; x++)
dat[y * img.cols + x] = img.at<unsigned char>(y, x);
//LSD処理
lines = lsd(&n_lines, dat, img.cols, img.rows);
//しきい値の最大値と最小値をもってくる
int max_NFA = 0;
for (int i = 0; i < n_lines; i++)
max_NFA = std::max(max_NFA, static_cast<int>(lines[i * 7 + 6]));
//結果描画用画像
cv::cvtColor(img, img, CV_GRAY2RGB);
//結果表示用ウィンドウ
cv::namedWindow("result_image");
cv::createTrackbar("NFA", "result_image", NULL, max_NFA, change_th_lsd);
cv::setTrackbarPos("NFA", "result_image", max_NFA);
//結果表示
cv::imshow("result_image", img);
cv::waitKey(0);
}
エラー内容は、
①error LNK2001: 外部シンボル ""double * __cdecl lsd(int *,double *,int,int)" (?lsd@@YAPEANPEAHPEANHH@Z)" は未解決です。
②error LNK1120: 1 件の未解決の外部参照
この二つです。
参考にしたサイトです。http://daily.belltail.jp/?p=1153
お願いします。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
lsd なる名前の関数の実装が存在していない.
想像ですが,
lsd.hと対になるlsd.cとかlsd.cppみたいな名前のファイルがあって
それをプロジェクトに加えれば良いのではないでしょうか.
想像ですが,
lsd.hと対になるlsd.cとかlsd.cppみたいな名前のファイルがあって
それをプロジェクトに加えれば良いのではないでしょうか.
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
これはlsd.cと書いてあるけどlsd.cpp (C++)だと画がでますね。(上の行をコメントにしたら)
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
>>
コメントにしたらエラーはなくなりました。
実行してみたらうまく結果が出なかったので、少しプログラム変えてみました。
グレースケール化するところをIplImage* loadImage = cvLoadImage("xx", CV_LOAD_IMAGE_GRAYSCALE);に変えました。
実行したら「ハンドルされない例外が 0x00007FFAF2497788 で発生しました」というエラーが発生してしました。まだこのプログラムを完全に理解できていないので…
もしこうしたほうがいいよっていうのがあれば教えていただきたいです。
回答ありがとうございます。
コメントにしたらエラーはなくなりました。
実行してみたらうまく結果が出なかったので、少しプログラム変えてみました。
グレースケール化するところをIplImage* loadImage = cvLoadImage("xx", CV_LOAD_IMAGE_GRAYSCALE);に変えました。
実行したら「ハンドルされない例外が 0x00007FFAF2497788 で発生しました」というエラーが発生してしました。まだこのプログラムを完全に理解できていないので…
もしこうしたほうがいいよっていうのがあれば教えていただきたいです。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
このプログラムは怪しいです。サイトも少し変です。ここにhttp://opencv.jp/cookbook/opencv_img.html似た処理があるのでこちらがいいです。全部そのままで動作しました。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
マトリックス演算をこのレベルでやるとなるとすこし違います。どういうところがポイントなのでしょう。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
ソースコードを提示する際は、BBCodeをが有効な(無効にしていない)状態でBBCodeのcodeタグで囲んでいただけると、見やすくてありがたいです。
初期化されていないポインタをデリファレンスすると、アクセス違反になるかもしれません。
kazuさんのもとのプログラムにloadImageは無いようですが、具体的にどのようなコードにしたのですか?kazu さんが書きました:グレースケール化するところをIplImage* loadImage = cvLoadImage("xx", CV_LOAD_IMAGE_GRAYSCALE);に変えました。
初期化されていないポインタをデリファレンスすると、アクセス違反になるかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
>>
そのサイトから確率的Hough変換のプログラムをビルドしてみたら、エラーなく動きましたが、
実行結果が出ずデバックが終わってしまいます。
なにか設定とか悪いのでしょうか…
いろいろ聞いてすいません、もしわかれば教えていただきたいです。
そうなんですか、ありがとうございます。C6b14 さんが書きました:このプログラムは怪しいです。サイトも少し変です。ここにhttp://opencv.jp/cookbook/opencv_img.html似た処理があるのでこちらがいいです。全部そのままで動作しました。
そのサイトから確率的Hough変換のプログラムをビルドしてみたら、エラーなく動きましたが、
実行結果が出ずデバックが終わってしまいます。
なにか設定とか悪いのでしょうか…
いろいろ聞いてすいません、もしわかれば教えていただきたいです。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
>>みけCATさん回答ありがとうございます
初めてだったので…やり方がわかりませんでした。次回からはそうします。
http://blog.livedoor.jp/juggleryou/arch ... ここを参考にしました。
ほんとのプログラム初心者なので…なにかさっぱりわからないのです。
初めてだったので…やり方がわかりませんでした。次回からはそうします。
http://blog.livedoor.jp/juggleryou/arch ... ここを参考にしました。
ほんとのプログラム初心者なので…なにかさっぱりわからないのです。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
>>
プログラムを変えるところは画像のところだけですよね??
cv::Mat src_img = cv::imread("../../image/「building.png」", 1);の「」の部分を結果を出したい画像の
ファイル名に変えるだけですよね??
実行結果が出ないので読み込まれてはないんじゃないかなと思います。でもプロジェクトにはxx.jpgというファイルで入れてあります。C6b14 さんが書きました:正常に動きました。もとの画像の(.bmp,.png,.jpgとか)読み込みはどうですか?
プログラムを変えるところは画像のところだけですよね??
cv::Mat src_img = cv::imread("../../image/「building.png」", 1);の「」の部分を結果を出したい画像の
ファイル名に変えるだけですよね??
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
たぶん勘違いしていると思うのですが/「building.png」", がきになるので もう一度確認お願いします。(スペースが入ると読めないかも)
それと「」があるのかどうか?
それと「」があるのかどうか?
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
それと ("../../image/ は d:/building.png とかの絶対アドレスの方が安全です。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
>>
「」はプロジェクトにあるはずです。
よく出力結果?を見てみたら、「PDB ファイルを開けないか、ファイルが見つかりません。」
こういうエラーっぽいのがありました。これが原因ですかね??
サンプル画像「building.png」入れて実行してもダメでした。C6b14 さんが書きました:たぶん勘違いしていると思うのですが/「building.png」", がきになるので もう一度確認お願いします。(スペースが入ると読めないかも)
それと「」があるのかどうか?
「」はプロジェクトにあるはずです。
よく出力結果?を見てみたら、「PDB ファイルを開けないか、ファイルが見つかりません。」
こういうエラーっぽいのがありました。これが原因ですかね??
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
オフトピック
>コメントにしたらエラーはなくなりました。
何をしたいのか(何を目指しているのか)わからないのですが…
何をしたいのか(何を目指しているのか)わからないのですが…
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
>>usaoさん
したいことは線分検出ですね。
うまくプログラムが動かないというか、結果が出ないって感じです。
したいことは線分検出ですね。
うまくプログラムが動かないというか、結果が出ないって感じです。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
”「」はプロジェクトにあるはずです。”は間違いのはず。「building.png」はあり得ないのでbuilding.pngに変えて下さい。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
>>
プログラム上は、cv::Mat src_img = cv::imread("../../image/building.png", 1);にしています。
説明不足でした、「」の中のファイルをプロジェクトに入れてあるってことです。C6b14 さんが書きました:”「」はプロジェクトにあるはずです。”は間違いのはず。「building.png」はあり得ないのでbuilding.pngに変えて下さい。
プログラム上は、cv::Mat src_img = cv::imread("../../image/building.png", 1);にしています。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
そうゆうことでしたらその画像をD:/ かC:/にコピーしてcv::imread("d:/building.png", 1);のようにすること。これをしないと堂々巡りになってしまいます。絶対アドレスが絶対いいです。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
>>
できました。長々とご指導ありがとうございました。
C6b14 さんが書きました:そうゆうことでしたらその画像をD:/ かC:/にコピーしてcv::imread("d:/building.png", 1);のようにすること。これをしないと堂々巡りになってしまいます。絶対アドレスが絶対いいです。
できました。長々とご指導ありがとうございました。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
オフトピック
Dドライブなんぞを絶対アドレスに指定されたら100%動かない環境とか出てくるけどそれをそんな勧め方していいのかな
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
オフトピック
それ以前に,元の話は放り投げて全く別のプログラム使うことになってるっぽいし.
ハフ変換とLSDとじゃ結果がわりと異なるハズなんだけどほんとにそれでいいのかっていう.
まぁ「解決」としてるみたいだからどうでもいいのだろうけど.
ハフ変換とLSDとじゃ結果がわりと異なるハズなんだけどほんとにそれでいいのかっていう.
まぁ「解決」としてるみたいだからどうでもいいのだろうけど.
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
どちらもOpenCVで線分検出を行うプログラムです。質問者のかたからの投稿にある通りです。画像を見れば一目瞭然です。
>したいことは線分検出ですね。
>したいことは線分検出ですね。
Re: エラーLNK2001とLNK1120のエラーが消えなくて困っています
一応念のため数学演算のレベルを確認したのには「質問者の答え」はなかったみたいです。プログラムの違いは演算レベルの違いです。
>マトリックス演算をこのレベルでやるとなるとすこし違います。どういうところがポイントなのでしょう。
>マトリックス演算をこのレベルでやるとなるとすこし違います。どういうところがポイントなのでしょう。