gpt4 book ai didi

c++ - 为 Visual Studio C++ 静态库强制导出名称

转载 作者:行者123 更新时间:2023-11-30 04:33:10 25 4
gpt4 key购买 nike

我在链接一个由“纯”C .c 文件的项目中的几个 cpp 文件组成的静态库时遇到了问题。 .c 文件正在寻找语法为 _FUNCTIONAME 的函数对象,如下所示:

logforwarder.obj : error LNK2001: unresolved external symbol _getEventLogProviders

但是 .lib 文件是这样导出的:文件 M:...\Release\recvevent.lib 的转储

File Type: LIBRARY

Exports

ordinal name

?_getEventLogProviders@@YAIPAPAD@Z (unsigned int __cdecl _getE
ventLogProviders(char * *))

Summary

C3 .debug$S
14 .idata$2
14 .idata$3
4 .idata$4
4 .idata$5
C .idata$6

我的 exports.def 文件如下所示:

EXPORTS
getEventLogProviders=getEventLogProviders @4

项目可以链接成功的库,导出函数如下:

Dump of file M:\...\screenshot.lib

File Type: LIBRARY

Exports

ordinal name

_ReflectiveLoader@4

我做错了什么?

最佳答案

装饰器在导出函数的开头添加下划线,并在结尾添加带数字的@。因此,您的 .def 文件应如下所示:

getEventLogProviders=_getEventLogProviders@4

就像现在一样,.def 没有任何效果,因为错位函数没有正确编写。

关于c++ - 为 Visual Studio C++ 静态库强制导出名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com