【发布时间】:2022-11-01 14:42:45
【问题描述】:
我在 msys2 中有一些 c++ 代码,我试图动态链接以显示动态链接库的工作原理。
在linux下,显示调用是没有问题的。进入 gdb,我们可以看到调用通过跳转向量,最终到达所需的函数。
但是在msys2中,他们想消除dll,我能找到的所有库都是.dll.a,我认为它们是真正的静态库。
我构建了一个像这样的微不足道的小功能:
#include <cstdint>
extern "C" {
uint64_t f(uint64_t a, uint64_t b) {
return a + b;
}
}
在makefile中编译:
g++ -g -fPIC -c lib1.cc
g++ -g -shared lib1.o -o libtest1.so
当我运行文件实用程序时,它说:
libtest1.so: PE32+ executable (DLL) (console) x86-64, for MS Windows
当我使用它编译代码时:
g++ -g main.cc -ltest1 -o prog
错误是 -ltest1 没有这样的文件或目录。
【问题讨论】: