您好我正在尝试使用VS2013社区版在C中构建最简单的DLL。我在选项中设置了“不使用预编译标题”(尽管项目创建向导似乎表明使用预编译标题是 强加,因为它是一个灰色的检查选项。无论如何,我决定关闭与项目属性相关的菜单。)但我仍然得到这个错误说
错误1错误C1853:'Release \ ExportDLLVars.pch'预编译头文件来自以前版本的编译器,或者预编译头是C ++,您从C使用它(反之亦然)D:\ devt \ CplusPlus \ Tests \ ExportDLLVars \ ExportDLLVars \ VarsSource.c 1 1 ExportDLLVars
我使用向导创建了一个默认的DLL项目,并添加了以下两个源文件
#define NAME_SIZE 80
struct _Person
{
char name[NAME_SIZE];
int tel_nb;
int age;
};
#ifdef EXPORTDLLVARS_EXPORTS
#define DLL_VAR __declspec(dllexport)
#else
#define DLL_VAR __declspec(dllimport)
#endif
DLL_VAR int get_age();
DLL_VAR void set_age(int a);
DLL_VAR extern struct _Person ThePerson;
作为头文件VarsSource.h和C文件是这样的:
#include "VarsSource.h"
DLL_VAR struct _Person ThePerson;
DLL_VAR int get_age(){ return ThePerson.age; }
DLL_VAR void set_age(int a){ ThePerson.age = a; }
答案 0 :(得分:0)
该向导创建一个C ++项目。您的C文件无法与向导生成的C ++文件共享预编译头文件,这部分错误意味着:or the precompiled header is C++ and you are using it from C
。
尝试以下方法:
对所有配置执行完全清理。
从项目中删除stdafx.cpp
文件。
重新检查项目设置并确保Configuration Properties / C / C ++ / Precompiled Headers在项目级别和关闭和单独的C / C ++文件。