DLL函数未导出:无法找到名为TestFunc的入口点

Pro*_*ofK 2 c windows winapi

我正忙着了解一点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)

我究竟做错了什么?

180*_*ION 6

您的函数是使用C或C++绑定编译的吗?你没有指定,但它看起来像你有可能使用C++编译器 - 编译器使用与C编译器非常不同的名称修改,你将无法简单地找到名称"TestFunc"好像您使用的是C编译器或使用C名称修改规则.

要简单地告诉C++编译器使用C名称修改规则,请在头文件中使用它:

extern "C"
{
  __declspec(dllexport) int TestFunc(char *, char *, char *);
}
Run Code Online (Sandbox Code Playgroud)