libpano13の関数を使用しながら、非常に単純なプログラムをコンパイルしようとしていますが、リンクエラーが発生しています。私はUbuntu10.04を使用しており、次のことを行っています。
sudo apt-get install libpano13-dev
私のサンプルプログラムは次のとおりです。
#include <cstring>
#include <pano13/PTcommon.h>
int main(int argc, char **argv) {
fullPath *outFile = new fullPath();
StringtoFullPath(outFile, (char *)"/tmp/randomImage.jpg");
return 0;
}
次のコマンドでこれをコンパイルしようとしています(上記のコードはpanoTest.cppというファイルにあります)。
$ g++ panoTest.cpp -o testApp -L/usr/lib -lpano13
このコマンドを実行すると、次のエラーが発生します。
$ g++ panoTest.cpp -o testApp -L/usr/lib -lpano13
/tmp/ccyIioEi.o: In function `main':
panoTest.cpp:(.text+0x87): undefined reference to `StringtoFullPath(fullPath*, char*)'
collect2: ld returned 1 exit status
make: *** [all] Error 1
ここで、/ usr /libでlibpano*を確認し、次のファイルを見つけました。
$ ls /usr/lib/libpano*
/usr/lib/libpano13.a /usr/lib/libpano13.so /usr/lib/libpano13.so.1
/usr/lib/libpano13.so.1.0.0
nmを使用してlibpano13.soをチェックし、次の出力を取得しました。
$ nm --demangle /usr/lib/libpano13.a | grep StringtoFullPath
U StringtoFullPath
U StringtoFullPath
00000000 T StringtoFullPath
$ nm --demangle /usr/lib/libpano13.so | grep StringtoFullPath
nm: /usr/lib/libpano13.so: no symbols
また、objdumpを使用して確認しました。
$ objdump -T /usr/lib/libpano13.so | grep StringtoFullPath
00057fd0 g DF .text 0000004c Base StringtoFullPath
したがって、次のことが当てはまるようです。
- libpano13は/usr/libに存在します。
- libpano13には、StringtoFullPathのシンボルが含まれています。
- / usr/libの正しいライブラリディレクトリを使用しています。
- pano13の正しいライブラリ名を使用しています。
- g++はライブラリを見つけることができます
しかし、何らかの理由で、g++はStringtoFullPathのシンボルを見つけることができません。
なぜこれが起こっているのかについて誰かが提案/アイデアを持っていますか?
どんな助けでも大歓迎です!