2011-07-03 5 views
5

私はUNIX用のCプロジェクトをウィンドウに移植します。これまでのところ、私はそれをコンパイルすることはできますが、ビルドすることはできません。ビジュアルスタジオのyaccとbison

error LNK2001: unresolved external symbol function_name 

私は.Yと.Lファイルを追加してい:私は取得しています問題は、ヘッダファイルで宣言されている機能の一部は、私は次のエラーを取得していますfiles.so YACCで定義されている、ありますproject.Iのソースディレクトリは、あなたが私に教えてください、私はWindows版へのポートのyaccファイルは、私は、ウェブ上でそれを検索stupid.I何かをやっているか、いないと思うけどit.Couldのための適切なチュートリアルを得ることができませんでした

  1. プロジェクトに.yまたは.lファイルを追加するにはどうすればよいですか。
  2. これらのファイルはどのようにしてウィンドウと互換性がありますか?
  3. 他のオブジェクトファイルとどのようにリンクできますか?私はflex.exe .Followingを使用して.yy.cファイルに.lファイルを変更してみました

EDIT

があることflex.exeと名の両方を仮にそれ

 c:\> flex.exe name.l 

ためのコマンドです。私はC;>にあります。そして、それらのすべてのファイルを以前に存在していたプロジェクトの解決に.l .y(previously present for parsing in unix system) .yy.c(corrsonding yacc file for windows)にロードしました。私がコンパイルしたら、私は

Can't read the header file parserheaderfile.h 

これは、UNIX システムのbisonによって生成する必要があるヘッダファイルで、次の取得します。だから私はwindowsのためにbisonと互換性がないと思う。それでは私にこの問題を解決する方法を教えてください。

ありがとうございます。

答えて

7

.yファイルと.lファイルのカスタムビルドルールを追加する必要があります。これを行うには、プロジェクトに.L、.Yと.cファイルの両方を追加.Lファイルと.Yファイル

  • のために一つのダミー.cファイルを作成

    1. に必要
    2. 右のカスタム工具類 - >一般 - >コマンドライン - >を構築する.Lファイルをクリックし、プロパティ
    3. 構成 - を選択>すべての構成
    4. 一般 - >項目タイプ - >カスタムツール
    5. を構築
    6. を適用しますカスタムカスタム工具類 - >一般 - >追加Dependencies-を構築する工具類 - >一般 - > Outputs->lexer.c
    7. を構築
    8. >parser.y parser.c
    9. を適用]を選択します。ソリューションエクスプローラでのyのファイル
    10. 設定 - >すべての構成
    11. 一般 - >項目タイプ - >カスタムカスタム>一般 - >コマンドライン - >bison -oparser.c parser.y
    12. 工具類 - を構築するツール
    13. の適用を構築カスタムビルドツール - >一般 - >出力 - >parser.c parser.h

    また、システム検索パスにflex.exe、bison.exe、およびm4.exeが必要です。別の欠点は、VSが依存関係を正しく取得しないため、パーサーまたはレクサーファイル内の何かを変更するときに、プロジェクトを手動で再構築する必要があることです。

  • +0

    これは、f/lexやbison/yaccを使って新しいプロジェクトを立ち上げるたびに設定する必要がありますか?または、VSを一度設定すれば、VSは設定を永遠にかつ永遠に記憶しますか?また、これらのライブラリを使用するための推奨IDEはありますか? gccでコンパイルする前に、f/lexやbison/yaccを実行しなければならないときに、コマンドラインから何かをすると、時には迷惑になることがあります。 – velocirabbit

    +1

    @velocirabbitこれはプロジェクト固有の設定です。したがって、.lまたは.yファイルごとに設定する必要があります。 – Rudi

    関連する問題