the*_*enp 4 c++ cygwin g++ undefined-reference static-linking
我正在尝试编译依赖于Xerces XML Parser的项目.该项目没有任何困难地为Windows编译,但我在使用Cygwin中的g ++编译时遇到了一些麻烦.
为了使用Xerces,我试图针对静态库编译我的代码libxerces-c.a.但是当我这样做时,我会得到如下错误:
/tmp/cc2QGvMh.o:test.cpp:(.text+0x3a): undefined reference to `xercesc_2_8::DOMImplementationRegistry::getDOMImplementation(unsigned short const*)'
Run Code Online (Sandbox Code Playgroud)
我已经检查过静态库ar,并确认它包含DOMImplementationRegistry.o定义我正在调用的函数的文件.
ar -t libxerces-c.a
...
DOMImplementationImpl.o
DOMImplementationRegistry.o
DOMLocatorImpl.o
...
Run Code Online (Sandbox Code Playgroud)
我还从库中提取了目标文件,并使用'nm'来确保我调用的函数实际存在:
ar -x libxerces-c.a
nm --demangle DOMImplementationRegistry.o
...
00000080 T xercesc_2_8::getDOMImplSrcVectorMutex()
00000300 T xercesc_2_8::DOMImplementationRegistry::getDOMImplementation(unsigned short const*)
000002a0 T xercesc_2_8::DOMImplementationRegistry::addSource(xercesc_2_8::DOMImplementationSource*)
...
Run Code Online (Sandbox Code Playgroud)
由于我可以为Windows编译所有内容但不能用g ++编译,我认为错误可能在链接器顺序中(类似于此问题中描述的问题).但是,即使更改了链接器顺序,我仍然会得到相同的编译器错误.我试过了两个
g++ -o test.exe test.cpp -Llib -lxerces-c
Run Code Online (Sandbox Code Playgroud)
和
g++ -o test.exe test.cpp lib/libxerces-c.a
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
| 归档时间: |
|
| 查看次数: |
5411 次 |
| 最近记录: |