DLL:当 SDK header 文件不使用它时,我可以使用 __declspec(dllexport)
DLL: Can I use __declspec(dllexport) when SDK header file doesn't use it
我正在使用一个 SDK,它希望我的 DLL 导出一些函数。 SDK 提供了一个 header 文件,像这样导出函数:
#ifdef __cplusplus
extern "C" {
#endif
HRESULT extern WINAPI Foobar();
#pragma pack(pop)
#ifdef __cplusplus
} /*extern "C"*/
#endif
https://github.com/sergiofst/wosa-xfs-spi-base-framework/blob/master/depends/INCLUDE/XFSSPI.H
我的问题是,我没有找到如何在提供商 (dllexport) 端使用这个 header,因为每次我尝试添加 __declspec(dllexport)
:
__declspec(dllexport) HRESULT WINAPI Foobar() {
...
}
我得到 error C2375: 'Foobar': redefinition; different linkage
。
那么有什么方法可以使用 SDK 提供的 header 文件,还是我必须使用 def 文件或 copy/edit 函数定义?
此致。
最简单、最愚蠢、最明显的方法是将头文件复制到您的项目中并向其添加 dllexport。
下一个方法是在实现该方法的文件中不包含头文件。
然后是我希望其他人回答的 .def 文件。
或者您可以尝试将 /EXPORT:Foobar 添加到 link.exe 命令行。
有关详细信息,请参阅 https://docs.microsoft.com/en-us/cpp/build/reference/export-exports-a-function。
我正在使用一个 SDK,它希望我的 DLL 导出一些函数。 SDK 提供了一个 header 文件,像这样导出函数:
#ifdef __cplusplus
extern "C" {
#endif
HRESULT extern WINAPI Foobar();
#pragma pack(pop)
#ifdef __cplusplus
} /*extern "C"*/
#endif
https://github.com/sergiofst/wosa-xfs-spi-base-framework/blob/master/depends/INCLUDE/XFSSPI.H
我的问题是,我没有找到如何在提供商 (dllexport) 端使用这个 header,因为每次我尝试添加 __declspec(dllexport)
:
__declspec(dllexport) HRESULT WINAPI Foobar() {
...
}
我得到 error C2375: 'Foobar': redefinition; different linkage
。
那么有什么方法可以使用 SDK 提供的 header 文件,还是我必须使用 def 文件或 copy/edit 函数定义?
此致。
最简单、最愚蠢、最明显的方法是将头文件复制到您的项目中并向其添加 dllexport。
下一个方法是在实现该方法的文件中不包含头文件。
然后是我希望其他人回答的 .def 文件。
或者您可以尝试将 /EXPORT:Foobar 添加到 link.exe 命令行。 有关详细信息,请参阅 https://docs.microsoft.com/en-us/cpp/build/reference/export-exports-a-function。