不使用def文件的DLL重定向导出
是否有某种方法指示MinGW-w64或CodeBlocks项目生成def文件中的行,如下所示:不使用def文件的DLL重定向导出,dll,mingw,codeblocks,Dll,Mingw,Codeblocks,是否有某种方法指示MinGW-w64或CodeBlocks项目生成def文件中的行,如下所示: func2=func1 int __attribute__((dllimport)) Double (int); int __attribute__((dllexport,alias("Double"))) NextDouble(int); 我原以为这会起作用,但编译器发出错误: | 2 |错误:“NextDouble”别名为未定义的符号“Double”| 有没有办法绕过别名到链接器 澄清: 我有一
func2=func1
int __attribute__((dllimport)) Double (int);
int __attribute__((dllexport,alias("Double"))) NextDouble(int);
我原以为这会起作用,但编译器发出错误:
| 2 |错误:“NextDouble”别名为未定义的符号“Double”|
有没有办法绕过别名到链接器
澄清:
我有一个DLL的导入库,它导出两个DLL。我正在尝试创建第二个DLL,它将导入Double并导出NextDouble,它将指向导入的Double的地址。因此,我将在def文件中执行NextDouble=Double。这将使export NextDouble在dll中指向import Double。这里是预处理器,它可以向-o阶段命令行添加字符:
#define first ".section .drectve\n.ascii\"
#define last \""
#define addcmd(name) first name last
#define cmd(name) asm(addcmd( name ))
cmd(thingtoadd)
因此,您可以向其中添加任何表示def文件的内容。是否尝试为函数创建命名别名?您的实际用例是什么?(将它添加到您的问题中,而不是作为注释)我想我解决了它,当我尝试它时,我将发布整个内容。是来自另一个dll模块的
Double
?您不能为驻留在另一个dll中的符号创建别名。是的,它是:(在另一种情况下,它将很容易解决如果你解释你试图解决的是什么,它会更好。你为什么认为你需要这样做?你能展示一下宏在预处理后扩展成什么吗?有些宏没有定义,比如linkit
。