api.cpp:
int (*theFunc) (int);
theFunc = (int (*) (int)) DlSym(hSo, "theFunc");
到目前为止,一切都很好。
现在,我想制作一个标头,以便其他 cpp 文件也可以调用 theFunc。
Api.h:根据如何在头文件和 c 文件中声明函数指针?
extern int (*theFunc)(int);
/usr/bin/ld:警告:在 Api.o 中,符号“theFunc”的类型从 2 更改为 1
好的,所以这是一个警告,即 theFunc 被视为一个编译元素中的函数和另一个编译元素中的变量。 (参考)这似乎在运行时会发生不好的事情。
这似乎是一个正确的声明,我做错了什么?
编辑:实际上在 linux 中运行,所以使用 DlSym 而不是 Microsoft GetProcAddress() 调用