Syn*_*ews 8 c++ dll name-mangling stdcall name-decoration
我正在研究一个DLL,它将使用_stdcall调用对话从另一种语言(因此没有导入库和包括dll的头文件)中使用.问题是VC++似乎总是对其导出的符号进行一些名称修饰.我见过的所有引用都说使用extern"C",但这似乎仍然留下了一个前导下划线,并且在导出的名称之后加了一个@加号.
最糟糕的一点是在目标语言中加载扩展dll的自动方式基本上是"func_name = GetProcAddress(dll,"func_name")"所以使用未修饰的名称GetProcAddress失败,并使用装饰名称它抱怨非法变量名称( @ 不被允许) :(
如何让VC++导出一些没有名字装饰的东西呢?
extern "C" __declspec(dllexport) int __stdcall test(int x, const char *str);
Run Code Online (Sandbox Code Playgroud)
DUMPBIN.EXE
00011366 _test @ 8 = @ ILT + 865(_test @ 8)
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |