【发布时间】:2012-05-19 13:27:50
【问题描述】:
我已经创建了一个静态库和一个 EXE 文件(它使用静态库),但是当我在 IDA pro 中打开 EXE 时,导出也列在 EXE 中。
我知道它们应该在 .lib 本身中导出,但为什么它们在 EXE 中也显示为导出?
编辑:这是一个导出/导入(它们在单独的头文件中)
这里是导出:
#define NC_LIBEXPORT(a) extern "C" __declspec(dllexport) a __cdecl
NC_LIBEXPORT(VOID) rol8(unsigned char* a, unsigned char b);
和导入:
extern "C" VOID rol8(unsigned char* a, unsigned char b);
【问题讨论】:
-
不是来自头文件,属性是附加在.lib里面的.obj文件中的标识符上。您必须构建一个特殊版本的 .lib 以防止应用 __declspec。如果您还将 .lib 链接到 DLL 中,不确定是否值得这样做,因为实际上没有任何代码会使用导出。
-
@Hans 是的,我只是以缓慢的方式解决了这个问题。通过构建一个测试项目!
-
谢谢@HansPassant :] 做到了!没有意识到静态库不需要
dllexport:] 对于这个项目,两个静态库对我来说很好。只是一个宏编辑。
标签: c++ pe-exports