Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将C库转换为C++;自由基_C++_C - Fatal编程技术网

C++ 将C库转换为C++;自由基

C++ 将C库转换为C++;自由基,c++,c,C++,C,我最近从C开始学习。 我需要开发一个TS3插件,它由tcp套接字控制。 我会用网袋。 我发现了一堆WebSocket库,但这些库只适用于使用pThread.h的linux。我的TS3插件将只在Windows设备上运行。 它被标在那张桌子上 TeamSpeak 3 SDK由ClientLib和ServerLib组成,是 作为共享库提供,带有C风格的编码接口 让开发人员直接访问灵活且功能丰富的集合 TeamSpeak 3的核心函数使用简单的API调用。 通过标准C接口,TeamSpeak SDK

我最近从C开始学习。
我需要开发一个TS3插件,它由tcp套接字控制。 我会用网袋。
我发现了一堆WebSocket库,但这些库只适用于使用
pThread.h
的linux。我的TS3插件将只在Windows设备上运行。

它被标在那张桌子上

TeamSpeak 3 SDK由ClientLib和ServerLib组成,是 作为共享库提供,带有C风格的编码接口 让开发人员直接访问灵活且功能丰富的集合 TeamSpeak 3的核心函数使用简单的API调用。 通过标准C接口,TeamSpeak SDK可以轻松 集成到高级编程语言中。无论如何 您的应用程序正在使用的技术,TeamSpeak SDK将适合您


<> P>这意味着我可以很容易地将TS3API转换成C++(

< p>)对你的问题的答案,你不需要把C库转换成C++。基本上,您可以链接C库(Linux:.a/.so)或(Win:.dll)并将该函数使用到相应的模块中

从C++源代码中访问C代码
    在C++语言中,LI>< P>提供了一个“链接规范”,声明一个函数或对象遵循支持的语言的程序链接约定。 <> >对象和函数的默认链接是C++。所有C++编译器也支持C链接,对于某些兼容的C编译器,

  • 当您需要访问使用C链接编译的函数(例如,由C编译器编译的函数,或在汇编程序中编写的函数)时,请将该函数声明为具有C链接

声明链接规范 使用以下符号之一声明对象或函数具有language\u name链接:

示例:

extern "C" void howdy(int);
extern "language_name" declaration ;
extern "language_name" { declaration ; declaration ; ... }
  • 第一个符号表示紧跟其后的声明(或定义)具有语言名称的链接
  • 第二个符号表示大括号之间的所有内容都有语言名称的链接,除非另有声明。请注意,在第二种表示法中,在右大括号后不使用分号
可以嵌套链接规范,但大括号不会创建作用域。考虑下面的例子:

extern "C" {
    void f();              // C linkage
    extern "C++" {
        void g();          // C++ linkage
        extern "C" void h(); // C linkage
        void g2();         // C++ linkage
    }
    extern "C++" void k(); // C++ linkage
    void m();              // C linkage
}
尽管有嵌套的链接说明符,上述所有函数都在相同的全局范围内

在C++代码中包含C标头 如果要使用具有自己的定义头(用于C编译器)的C库,可以将该头包含在外部“C”括号中:

    extern "C" {
        #include "header.h"
    }

<强> StutoNo: 你需要在C头文件中添加这个保护,以便在C++中使用它。

#ifndef __YOURLIB_H_
#define __YOURLIB_H_

#ifdef __cplusplus
extern "C" {
#endif

int sample_func(int n);

#ifdef __cplusplus
}
#endif

#endif

你的问题的答案,你不需要把C库转换成C++。基本上,您可以链接C库(Linux:.a/.so)或(Win:.dll)并将该函数使用到相应的模块中

从C++源代码中访问C代码
    在C++语言中,LI>< P>提供了一个“链接规范”,声明一个函数或对象遵循支持的语言的程序链接约定。 <> >对象和函数的默认链接是C++。所有C++编译器也支持C链接,对于某些兼容的C编译器,

  • 当您需要访问使用C链接编译的函数(例如,由C编译器编译的函数,或在汇编程序中编写的函数)时,请将该函数声明为具有C链接

声明链接规范 使用以下符号之一声明对象或函数具有language\u name链接:

示例:

extern "C" void howdy(int);
extern "language_name" declaration ;
extern "language_name" { declaration ; declaration ; ... }
  • 第一个符号表示紧跟其后的声明(或定义)具有语言名称的链接
  • 第二个符号表示大括号之间的所有内容都有语言名称的链接,除非另有声明。请注意,在第二种表示法中,在右大括号后不使用分号
可以嵌套链接规范,但大括号不会创建作用域。考虑下面的例子:

extern "C" {
    void f();              // C linkage
    extern "C++" {
        void g();          // C++ linkage
        extern "C" void h(); // C linkage
        void g2();         // C++ linkage
    }
    extern "C++" void k(); // C++ linkage
    void m();              // C linkage
}
尽管有嵌套的链接说明符,上述所有函数都在相同的全局范围内

在C++代码中包含C标头 如果要使用具有自己的定义头(用于C编译器)的C库,可以将该头包含在外部“C”括号中:

    extern "C" {
        #include "header.h"
    }

<强> StutoNo: 你需要在C头文件中添加这个保护,以便在C++中使用它。

#ifndef __YOURLIB_H_
#define __YOURLIB_H_

#ifdef __cplusplus
extern "C" {
#endif

int sample_func(int n);

#ifdef __cplusplus
}
#endif

#endif

假设写得很好,C API是C++的API。如果你想要课堂和其他东西,你必须自己做。这个帖子可能对你有帮助。假设写得很好,C API就是你的C++ API。如果你想要课程和其他东西,你必须自己去做。这篇文章可能会对你有所帮助。