使用C / C ++ DLL标头构建C应用程序时出现语法错误C2059

马特

我正在尝试将C ++ DLL标头文件转换为C / C ++兼容标头。虽然我已经了解了大多数主要结构,但我遇到了最后一个编译器问题,我似乎无法解释。以下代码在C ++中可以正常工作,但是当我尝试编译仅包含此文件的C应用程序时,在头文件中出现函数定义错误。

Code.h:

typedef void *PVOID;
typedef PVOID HANDLE;
#define WINAPI  __stdcall

#ifdef LIB_EXPORTS
    #define LIB_API __declspec(dllexport)
#else
    #define LIB_API __declspec(dllimport)
#endif

struct ToolState
{
    HANDLE DriverHandle;
    HANDLE Mutex;
    int LockEnabled;
    int Type;
};

#ifdef __cplusplus
extern "C" {
#endif

(LIB_API) int SetRate(ToolState *Driver, int rate);

(LIB_API) void EnableLock(ToolState *Driver) ;

(LIB_API) int SendPacket(ToolState *Driver, unsigned char *OutBuffer, int frameSize);

//These also give me the same error:
//LIB_API WINAPI int SendPacket(ToolState *Driver, unsigned char *OutBuffer, int frameSize);
//__declspec(dllimport) WINAPI int SendPacket(ToolState *Driver, unsigned char *OutBuffer, int frameSize);

//Original C++ call that works fine with C++ but has multiple issues in C
//LIB_API int SetRate(ToolState *Driver, int rate);

#ifdef __cplusplus
}
#endif

错误:

error C2059: syntax error : 'type'
error C2059: syntax error : 'type'
error C2059: syntax error : 'type'

Google搜索未产生任何相关结果。以下线程很接近,但不能完全回答我的问题:

C2059使用declspec宏的一个函数的语法错误;没有它就可以编译

http://support.microsoft.com/kb/117687/en-us

为什么会出现此语法错误?

乌尔里希·埃克哈特(Ulrich Eckhardt)

在C中,结构不是类型,因此必须使用struct Fooandenum Bar在C ++中可以使用Fooand的位置Bar

笔记:

  • 在C ++中,即使类型是类,您仍然可以使用旧语法。
  • 在C语言中,人们经常使用typedef struct Foo Foo它允许与C ++语言相同的语法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用C / C ++ DLL标头构建C应用程序时出现语法错误C2059

来自分类Dev

错误:C2059:语法错误:'{'

来自分类Dev

错误 C2059:语法错误:'}' C++

来自分类Dev

错误C2059:语法错误:“类型”

来自分类Dev

错误C2059:语法错误“常量”

来自分类Dev

错误C2059:语法错误:','-表示宏'getcwd'

来自分类Dev

错误C2059:语法错误:cl.exe vc编译器出现“数字后缀错误”

来自分类Dev

错误C2059:vs10中“ =删除”上的语法错误C ++代码

来自分类Dev

错误C2059:语法错误:结构成员声明中的“常量”

来自分类Dev

电话号码列表“错误C2059语法错误:']'

来自分类Dev

使用COMPS构建C / C ++应用程序时出错:硬编码路径

来自分类Dev

尝试从C#调用VB6应用程序时出现文件/访问错误

来自分类Dev

C ++语法错误

来自分类Dev

C ++语法错误

来自分类Dev

“语法错误:缺少';' 在带有预编译标头的c ++项目中,在“ {””之前

来自分类Dev

C ++错误C3646,C2059和C2238 Visual Studio 2015(社区)

来自分类Dev

使用C库标头的C ++程序将“ this”识别为关键字。外部“ C”错误?

来自分类Dev

使用 GCC 编译简单的 C 程序时出现 clang 错误

来自分类Dev

错误C2143和错误C2059缺少“;” 前 ”{”

来自分类Dev

尝试使用标头(QPID / Proton C ++)进行构建时出现“未定义的引用”链接错误

来自分类Dev

Cygwin1.dll C++ 应用程序错误

来自分类Dev

当我尝试编译用C#代码编写的WPF应用程序时出现错误

来自分类Dev

C ++向量语法错误

来自分类Dev

语法错误'('-C#

来自分类Dev

C语言的语法错误

来自分类Dev

逻辑或语法错误?C ++

来自分类Dev

C#语法错误

来自分类常见问题

使用C ++ 17构建ios应用程序?

来自分类Dev

使用C ++ 17构建ios应用程序?

Related 相关文章

  1. 1

    使用C / C ++ DLL标头构建C应用程序时出现语法错误C2059

  2. 2

    错误:C2059:语法错误:'{'

  3. 3

    错误 C2059:语法错误:'}' C++

  4. 4

    错误C2059:语法错误:“类型”

  5. 5

    错误C2059:语法错误“常量”

  6. 6

    错误C2059:语法错误:','-表示宏'getcwd'

  7. 7

    错误C2059:语法错误:cl.exe vc编译器出现“数字后缀错误”

  8. 8

    错误C2059:vs10中“ =删除”上的语法错误C ++代码

  9. 9

    错误C2059:语法错误:结构成员声明中的“常量”

  10. 10

    电话号码列表“错误C2059语法错误:']'

  11. 11

    使用COMPS构建C / C ++应用程序时出错:硬编码路径

  12. 12

    尝试从C#调用VB6应用程序时出现文件/访问错误

  13. 13

    C ++语法错误

  14. 14

    C ++语法错误

  15. 15

    “语法错误:缺少';' 在带有预编译标头的c ++项目中,在“ {””之前

  16. 16

    C ++错误C3646,C2059和C2238 Visual Studio 2015(社区)

  17. 17

    使用C库标头的C ++程序将“ this”识别为关键字。外部“ C”错误?

  18. 18

    使用 GCC 编译简单的 C 程序时出现 clang 错误

  19. 19

    错误C2143和错误C2059缺少“;” 前 ”{”

  20. 20

    尝试使用标头(QPID / Proton C ++)进行构建时出现“未定义的引用”链接错误

  21. 21

    Cygwin1.dll C++ 应用程序错误

  22. 22

    当我尝试编译用C#代码编写的WPF应用程序时出现错误

  23. 23

    C ++向量语法错误

  24. 24

    语法错误'('-C#

  25. 25

    C语言的语法错误

  26. 26

    逻辑或语法错误?C ++

  27. 27

    C#语法错误

  28. 28

    使用C ++ 17构建ios应用程序?

  29. 29

    使用C ++ 17构建ios应用程序?

热门标签

归档