C/ c++以一种特定的方式管理输出
C/C++ mangle exports in a specific way
由于特定的需要,我需要创建一个DLL,导出一个以特定方式命名的函数,它也被打乱了。
?drawGdi@stop@234@@Z
有办法做到这一点吗?
你可以这样做,但是你必须写一个DEF文件。
<标题> foo:extern "C" declspec(dllexport) void foo(int);
<标题> foo.def: EXPORTS
?drawGdi@stop@234@@Z=_foo
(_foo
为函数的导出名称)。
当然,记得在链接DLL时指定DEF文件。
详细信息请参见DEF文件的文档
标题>标题>你不能像这样声明你的函数吗?
class myclass;
extern "C" void my_function(int,myclass&);
那么它应该导出为my_function
(至少在Posix系统上;我猜在Windows上是一样的,但我不知道)。
如果用GCC编译,你可以使用Asm标签。那么汇编程序可以接受的任何名称都可以。
在使用ELF可执行文件的Linux上,您可能不能像David Schwartz建议的那样,简单地编辑二进制文件(因为这可能会破坏ELF中用于符号的哈希表)。
相关文章:
- 并发/多线程:是否可以以这种方式生成相同的输出?
- 在数组中输入 n 个整数的列表,并以类似于钟摆来回移动的方式排列它们. 输入-1 3 2 5 4,输出5 3 1 2 4
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出
- 为什么两种不同的对象初始化方式给出不同的输出
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 在 Windows 命令行中运行.exe在使用 2 种相同方式执行时会产生不同的输出
- 意外输出..函数绑定在虚拟表中的发生方式
- 更改输出文件外观(C )的方式 - 需要先阅读,然后以不同的格式写入
- 为什么这个浮点类型的值以这种方式输出
- 以编程方式清除Visual Studio输出窗口
- 重载输入/输出运算符,为什么它以这种方式工作而不是以另一种方式工作
- std::cout,是二进制的,是一种更快的写输出的方式
- 用于循环的C++没有以其他方式输出
- 使 c++ 程序以交互方式将输入输出传递给 windows 命令 prommpt
- 输出输入c++的最短方式
- C++ 字符串比较运算符>根据两个字符串的比较方式生成不同的输出
- 当使用spirit以其他方式解析结构时,会导致输出混乱
- c++ ||添加两个矩阵的方式更容易输出
- Can运算符<<用于设计我们自己的输出显示方式
- 为什么这在 C# 和 C++ 中的输出方式不同