更新 to" c ++"一切都编译和链接很好。我理解这两个地图都是铿锵的,所以我不确定区别是什么。
====
我有一个Makefile,可以在Ubuntu Linux上正常运行,为Java Native项目编译JNI实现。它使用我自己的静态库" libpt.a"。
我试图在Yosemite OSX上编译Makefile。它主要是这样,但它没有链接到libpt.a中的少数几个符号(在这种情况下我在OSX上专门重新编译)。
g++ -L. -shared -o "libphoto_jni.dylib" PhotoNativeInterface.o -lpt
Undefined symbols for architecture x86_64:
"_parseWpiEnumString", referenced from:
parseWpiAngle(char const*) in PhotoNativeInterface.o
parseWpiCategory(char const*) in PhotoNativeInterface.o
parseWpiColor(char const*) in PhotoNativeInterface.o
parseWpiProcessingQuality(char const*) in PhotoNativeInterface.o
然而,符号似乎就在那里:
$ ls -al libpt.a
-rw-r--r-- 1 jdowdell 110244447 2493728 Dec 14 13:23 libpt.a
$ nm libpt.a
[redacted]
libpt.a(lib.cc.o):
[redacted]
0000000000000000 T _parseWpiEnumString
[redacted]
$ ar -x libpt.a lib.cc.o
$ file lib.cc.o
lib.cc.o: Mach-O 64-bit object x86_64
如果重要:
$ g++ -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.5.0
Thread model: posix