記事 ID: 000077602 コンテンツタイプ: 製品情報 & ドキュメント 最終改訂日: 2021/08/27

Nios II C ソフトウェア・プロジェクトに C ファイルを含める方法は?

環境

  • インテル® Nios® II プロセッサー
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    詳細

    C2H は C ファイルからのアクセラレーターの生成をサポートしていません。 

     

    高速化したい関数を C ソースファイルから C ソースファイルに移動する C プログラムからアクセラレーターを呼び出す回避策があります。   C ソースファイルに関数が含まれると、C2H コンパイラーは効果的に「見る」とハードウェア・アクセラレーターに変換することができます。 

     

    C と C の機能 (およびファイル) の混在に必要な追加手順があります。

     

    GNU ツールチェーンは、明確に定義された法を用いて、C プログラムからの C 関数の呼び出し (およびその逆) をサポートします。    これは、C プログラムから、C 関数ではなくC関数として呼び出すべき関数をコンパイラーに指示することです。   この操作は、C ソースファイル内でextern "C"構文を使用して実行されます。

     

    実際の extern "C" 構文の例は次のとおりです。

    1. C プログラムから C 関数を呼び出す

    セットアップ:   関数 void bar (void)があり、C ソースファイル "bar.c" に存在し、C ソースファイル "http.cpp" から呼び出す必要があります。

    解決方法:   これを「http:/」の先頭に追加します。  

                    extern "C"void(void);

     

    1. C プログラムから C 関数を呼び出す

    セットアップ:   C ソースファイル "bar.c" に存在する関数のコレクションです。C ソースファイル "http:c"から呼び出す必要があります。

    解決方法:   "http:".cpp"の extern ステートメントの上部にある関数のグループの周辺に卉を追加するだけです。  

                    extern "C" {

    void(void);

    int int- 2 (int ナンバー);

    int int int3 (int ナンバー 1、int ナンバー 2);

    }

     

    1. C プログラムから C ヘッダーを呼び出す

    セットアップ:C プログラム"http.c"から呼び出したい「bar.c」というファイルに C 関数 (またはライブラリー) の全コレクションがあり、実際には手順 #2 (上記) を通じて個別にリストしたくありません。   「bar.c」には「bar.h」というヘッダーファイルがあり、関数へのインターフェイスを定義しています。

    解決方法: extern ステートメントはヘッダーファイルでも機能します...ファイル「jp.cpp」では、extern ステートメントを使用してヘッダーファイルを追加します-

                    extern "C" {

                                    「bar.h」を#include

    }

     

     

    C2H で使用するのに最適な手法はどれですか?C2H コンパイラーを使用する場合、ユーザーはアクセラレーションの関数を独自のファイルに「分離」することを推奨します。最初の例を使用することは、C2H コンパイラーで関数を高速化するための最良のアプローチです。

     

    関連製品

    本記事の適用対象: 1 製品

    インテル® プログラマブル・デバイス

    このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。