64,637
社区成员
发帖
与我相关
我的任务
分享
正在编译...
1>MyDll.c
1>f:\windows编程\dll1\dll1\mydll.h(7) : error C2059: 语法错误 : “字符串”
1>f:\windows编程\dll1\dll1\mydll.h(8) : error C2059: 语法错误 : “字符串”
1>生成日志保存在“file://f:\Windows编程\dll1\dll1\Debug\BuildLog.htm”
1>dll1 - 2 个错误,0 个警告
MyDll.h
#ifndef MYDLLAPI
#define MYDLLAPI extern "C" _declspec(dllimport)
#endif
MYDLLAPI int g_nResult;
MYDLLAPI int Add(int nLeft,int nRight);
MyDll.c
#include <windows.h>
#define MYDLLAPI extern "C" _declspec(dllexport)
#include "MyDll.h"
int g_nResult;
int Add(int nLeft,int nRight)
{
g_nResult = nLeft + nRight;
return(g_nResult);
}
我认为正如老邓所说,extern "C" 是C++里的声明,用以声明函数是C函数,
编译器对该函数按C风格起名,因为默认C++编译器是按C++重载风格起名函数的.
C里没有重载,所以不需要extern "C"来做这个特殊声明.