gpt4 book ai didi

c++ - MinGW 转发 dll 调用

转载 作者:行者123 更新时间:2023-11-28 05:30:23 24 4
gpt4 key购买 nike

我正在尝试将调用从我的 DLL 转发到另一个 DLL。我找不到任何关于如何使用 MinGW 执行此操作的文档。

我会使用 Visual C++ 编译器:

#pragma comment (linker, "/export:DllInitialize=api.DllInitialize,@2")

或者使用 .def 定义文件:

EXPORTS

DllInitialize=api.DllInitialize

但是当使用 MinGW32 编译时,这些都不起作用。如果重要的话,我正在使用 Code::Blocks 作为 IDE。我如何使用 MinGW32 执行此操作?

最佳答案

对不起,我在上面的代码中加了太多双引号。相反,它应该是这样的:

asm (".section .drectve\n\t.ascii \" -export:DllInitialize=api.DllInitialize @2\"");

如果需要多次使用,可以考虑放在宏中,例如

#ifdef _MSC_VER
#define FORWARDED_EXPORT_WITH_ORDINAL(exp_name, ordinal, target_name) __pragma (comment (linker, "/export:" #exp_name "=" #target_name ",@" #ordinal))
#endif
#ifdef __GNUC__
#define FORWARDED_EXPORT_WITH_ORDINAL(exp_name, ordinal, target_name) asm (".section .drectve\n\t.ascii \" -export:" #exp_name "= " #target_name " @" #ordinal "\"");
#endif

FORWARDED_EXPORT_WITH_ORDINAL(DllInitialize, 2, api.DllInitialize)
FORWARDED_EXPORT_WITH_ORDINAL(my_create_file_a, 100, kernel32.CreateFileA)

你明白了

关于c++ - MinGW 转发 dll 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39688983/

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