我正忙着了解一点C/C++,并与C#互操作.我已经检查了几个创建一个简单的Win32 DLL并使用它来自C#的例子,但是当我尝试调用我的DLL时,我得到了运行时错误:"无法找到名为TestFunc的入口点".我的DLL看起来像这样,我使用空项目选项从Win32 DLL项目创建它:
标题:
__declspec(dllexport) int TestFunc(char *, char *, char *);
Run Code Online (Sandbox Code Playgroud)
代码文件:
#include "stdafx.h"
#include "TestLib.h"
__declspec(dllexport) int TestFunc(char *arg1, char *arg2, char *arg3)
{
char str1[] = "Brady Kelly";
char str2[] = "Hello World";
char str3[] = "1234567890";
strcpy(arg1, str1);
return 128;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您的函数是使用C或C++绑定编译的吗?你没有指定,但它看起来像你有可能使用C++编译器 - 编译器使用与C编译器非常不同的名称修改,你将无法简单地找到名称"TestFunc"好像您使用的是C编译器或使用C名称修改规则.
要简单地告诉C++编译器使用C名称修改规则,请在头文件中使用它:
extern "C"
{
__declspec(dllexport) int TestFunc(char *, char *, char *);
}
Run Code Online (Sandbox Code Playgroud)