相关疑难解决方法(0)

usr/bin/ld:找不到-l <nameOfTheLibrary>

我正在尝试编译我的程序,它返回此错误:

usr/bin/ld: cannot find -l<nameOfTheLibrary>
Run Code Online (Sandbox Code Playgroud)

在我的makefile中,我使用命令g++并链接到我的库,这是指向位于其他目录中的库的符号链接.

是否可以选择添加以使其正常工作?

c++ linux g++

401
推荐指数
8
解决办法
86万
查看次数

如何修补第 3 方 .so 文件以访问非导出符号 (C++)

我有一些.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)

c++ reverse-engineering ld readelf nm

8
推荐指数
1
解决办法
923
查看次数

标签 统计

c++ ×2

g++ ×1

ld ×1

linux ×1

nm ×1

readelf ×1

reverse-engineering ×1