2017-04-22 15 views
1

最近C言語を使い始めました。
私はTS3プラグインを開発する必要があります。これはtcpソケットで制御されます。 私はWebSocketを使用します。
私はWebsocketのライブラリの束を見つけましたが、これはpThread.hを使用するLinuxの場合のみです。私のTS3プラグインはWindowsデバイス上でのみ動作します。

それは上にマークされているoffical TS3 SDK SiteCライブラリをC++ライブラリに変換する

TeamSpeak 3 SDKはClientLibとserverlibに、柔軟に開発者に直接アクセスを提供 にCスタイルコーディングインタフェースと共用ライブラリとして提供 さから成ることシンプルなAPI呼び出しを使用してTeamSpeak 3のコア機能の豊富なセット を設定します。 標準のCインターフェイスを使用すると、TeamSpeak SDKを簡単に の高水準プログラミング言語に統合することができます。どんなにあなたのアプリケーションが使用している 技術、TeamSpeak SDKは収まるません。

をだから私はイースリーC++にTS3 APIを変換することができることを意味?

+2

それがよく書かれたC、CのAPIだと仮定すると、* *あなたのC++ APIです。クラスやその他のものが必要な場合は、それを自分で行う必要があります。 – InternetAussie

+0

この投稿はhttp://stackoverflow.com/questions/12066279/using-c-library-for-c-programsが役に立ちます。 – Scab

答えて

1

あなたの質問に対する答えは、CライブラリをC++に変換する必要はありません。基本的に、Cライブラリ(Linux:.a/ .so)または(Win:*。dll)をリンクして、対応するモジュールにその関数を使用することができます。

アクセスCコードはC++言語で

  • C++ソース内からは、関数またはオブジェクトがサポートされている言語のためのプログラムリンケージの規則に従うことを宣言していると、「リンケージ指定」を提供します。
  • オブジェクトと関数のデフォルトリンケージはC++です。すべてのC++コンパイラは互換性のあるCコンパイラのCリンケージもサポートしています。

  • Cリンケージでコンパイルされた関数(例えば、Cコンパイラでコンパイルされた関数またはアセンブラで記述された関数)にアクセスする必要がある場合は、Cリンケージを持つ関数を宣言します。

    例:

    extern "C" void howdy(int); 
    extern "language_name" declaration ; 
    extern "language_name" { declaration ; declaration ; ... } 
    

    宣言リンケージ仕様

    以下の表記の

    いずれかを使用して、オブジェクトまたは関数は、言語LANGUAGE_NAMEの結合を有することを宣言する

  • 最初の表記は、宣言(o rの定義)は、language_nameのリンケージを持っています。
  • 2番目の表記法は、中括弧間のすべてに、別途宣言されていない限り、language_nameのリンケージがあることを示します。 2番目の表記で中括弧の後にセミコロンを使用しないことに注意してください。

リンケージ仕様をネストできますが、中括弧はスコープを作成しません。次の例を考えてみます。

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ライブラリを使用したい場合は、あなたがにextern「C」括弧内のヘッダーを含めることができます。

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

SIDENOTE: Cのヘッダーファイルにこのガードを追加する必要があります。

#ifndef __YOURLIB_H_ 
#define __YOURLIB_H_ 

#ifdef __cplusplus 
extern "C" { 
#endif 

int sample_func(int n); 

#ifdef __cplusplus 
} 
#endif 

#endif 

Tutorial to use C lib in C++.