アプリ版:「スタンプのみでお礼する」機能のリリースについて

libdecodeqrをVC6.0のダイアログベースアプリで使いたいの

libdecodeqrをVC6.0のダイアログベースアプリで使いたいのですが、以下のような簡単なコードを書いたのですが、リンクで「error LNK2001: 外部シンボル *** は未解決です」となり、エラーになります。
OpenCVのインストールや設定はできております。
また、libdecodeqrのサンプルにあるsimple,webcam共にビルドし動作するのを確認できています。


// 画像読み込み
IplImage* pImage = NULL ;
pImage = cvLoadImage( strFilePath, CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR ) ;

// OPEN
QrDecoderHandle hQRDecoder = qr_decoder_open() ;

// ちょっとした処理

// CLOSE
qr_decoder_close( hQRDecoder );

cvReleaseImage( &pImage ) ;


よろしくお願いします。

A 回答 (2件)

>#pragma comment(lib, ".\\libdecodeqr\\libdecodeqr.lib")


個人的には pragma でライブラリ指定したことが無いのですが
(ついでに言えばlibdecodeqrも知りません)

#pragma comment(lib, ".\\libdecodeqr\\libdecodeqr")
にして変わりませんか?
(ヘルプ見ると.libはいらなそうですが)
※ フォルダ指定が間違っていないかも確認してください
  (わざと違うフォルダ指定した場合エラー内容が変わるか)

もしくは pragma 指定でなくプロジェクトにライブラリを追加してみるとどうなるでしょうか

この回答への補足

#pragmaを使用せずに、プロジェクトの設定側でlibを追加したところ、
外部シンボルのエラーがなくなりました。
なぜそうなったのか不思議で、いろいろと設定を見直したところ、
pragamで指定していたPathにあるlibはextern cを定義しない状態でビルドしたlibを入れてありました。
そのlibがいけなかったようです。
完全に私のチョンボでした。

ちなみに、このリンクエラーは解決したのですが、

LINK : warning LNK4098: defaultlib "msvcrtd.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください

というエラーがでました。これについてはHelpを読んで、以下のlibを無視するように設定してみました。
libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib

ひとまずビルドはエラー・警告ともに0になりました。


よきアドバイスを頂き、ありがとうございました。

補足日時:2010/03/30 14:04
    • good
    • 0
この回答へのお礼

よきアドバイスを頂き、ありがとうございました。

お礼日時:2010/03/30 14:06

>error LNK2001: 外部シンボル *** は未解決です


***の部分が重要なのになぜ伏せるのでしょう

普通に考えれば其の関数か変数かが定義されていないのでしょう
変数なら定義し忘れて参照定義だけしているとか
ライブラリ内の関数なら関数名の内間違えか
リンクしてるライブラリが間違っ(不足し)ていると思います

この回答への補足

失礼しました。
error LNK2001: 外部シンボル "_qr_decoder_close" は未解決です
error LNK2001: 外部シンボル "_qr_decoder_open" は未解決です
ソース内で使用している libdecodeqr.lib の関数について全て未解決ですとエラーになっています。
(今回は簡単にするためにopen/Closeだけにしています)
リンクするlibdecodeqr.libと、そのヘッダーはちゃんとあり、このような感じで定義もしてあります。
#pragma comment(lib, ".\\libdecodeqr\\libdecodeqr.lib")
#include ".\libdecodeqr\decodeqr.h"

で、リンクしたLibに関数や変数が定義されていないのではないか、関数名が間違ってないかというと、そのLibを使用したライブラリに付属されているサンプルソースではちゃんと動作しています。
ただし、そのソースはMFCは使用していません。

補足日時:2010/03/30 13:14
    • good
    • 0
この回答へのお礼

お礼のルールがわかってなくてお礼入力していませんでした。
本当に今頃になってしまい申し訳ございませんが、ありがとうございました。

お礼日時:2011/05/26 16:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!