OhM*_*ere 6 c++ linker dynamic-linking static-libraries dllexport
我在MSVC2017中有以下场景:
bool foo()
foo()
通过以下方式调用的应用程序GetProcAddress
在静态库中,foo()
定义如下:
extern "C" __declspec(dllexport) bool foo()
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
现在,由于foo()
不被动态链接库使用,因此它的符号不会被导出,因此在应用程序使用时无法找到GetProcAddress
。
我努力了:
#pragma comment(linker, "/include:foo")
和:
#pragma comment(linker, "/export:foo")
如果我将定义移动到动态链接库(不是可行的解决方案) ,我可以使用 Dependency Walker 看到导出的内容foo()
,但是当我使用上述链接器开关将定义保留在静态库中时,我似乎无法导出符号。我认为这是因为该符号仍未使用,因此仍然没有导出?
我想要一个适用于 Windows 上的 MSVC 和 Linux 上的 Clang 的解决方案。谢谢!