我在VS中创建新的Win32项目,并选择动态库(* .dll文件)在这个宗旨。
我已经定义在主文件中一些出口函数:
__declspec(dllexport)
int TestCall(void)
{
int value = 4 / 2;
std::cout << typeid(value).name() << std::endl;
return value;
}
__declspec(dllexport)
void SwapMe(int *first, int *second)
{
int tmp = *first;
*first = *second;
*second = tmp;
}
当我看了dumpin /出口,我有:
ordinal hint RVA name
1 0 00001010 ?SwapMe@@YAXPEAH0@Z
2 1 00001270 ?TestCall@@YAHXZ
我打电话给在C#的版本是这样的:
[DllImport(@"lib1.dll", EntryPoint = "?TestCall@@YAHXZ",
CallingConvention = CallingConvention.Cdecl)]
static extern int TestCall();
它不使用导出的方法的正确形式。 我在哪里失败,在C ++ DLL项目出口的方法产生这样的名字?