我正在尝试编译我的程序,它返回此错误:
usr/bin/ld: cannot find -l<nameOfTheLibrary>
Run Code Online (Sandbox Code Playgroud)
在我的makefile中,我使用命令g++并链接到我的库,这是指向位于其他目录中的库的符号链接.
是否可以选择添加以使其正常工作?
我有一些.fic专有格式的二进制文件,我有一个wd250hf64.so来自该供应商的包含 C++ 方法的文件 CComposanteHyperFile::HExporteXML(wchar_t* const path)
我可以使用 nm 看到
$ nm --demangle wd250hf64.so --defined-only
0000000000118c90 t CComposanteHyperFile::HExporteXML(wchar_t const*)
Run Code Online (Sandbox Code Playgroud)
未损坏的版本_ZN20CComposanteHyperFile11HExporteXMLEPKw与我使用本地 g++ 版本的版本相同
雷德夫给出
readelf -Ws wd250hf64.so | grep _ZN20CComposanteHyperFile11HExporteXMLEPK
19684: 0000000000118c90 119 FUNC LOCAL DEFAULT 11 _ZN20CComposanteHyperFile11HExporteXMLEPKw
Run Code Online (Sandbox Code Playgroud)
现在我尝试编写一个非常简单的程序
$ nm --demangle wd250hf64.so --defined-only
0000000000118c90 t CComposanteHyperFile::HExporteXML(wchar_t const*)
Run Code Online (Sandbox Code Playgroud)
但是当我用它编译时g++ toto.cpp -L. -l:wd250hf64.so
我有toto.cpp:(.text+0x10): undefined reference to 'CComposanteHyperFile::HExporteXML(wchar_t const*)'
我没有更多的运气dlopen
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int
main(int argc, char **argv)
{
void *handle; …Run Code Online (Sandbox Code Playgroud)