2012-01-19 10 views
3

私はC++を学び、特に私のライブラリから関数をエクスポートしようとしています。エクスポートされた関数を指定するモジュール定義(.DEF)ファイルを設定しました。構文は、私がMSDNで読んだ内容に準拠しています。.DEFファイルのIntellisenseエラー

DEFファイルのほぼすべてのステートメントでインテリセンスエラーが発生する理由を理解しようとしています。例えば

:これらのすべてにもかかわらず(これらはエラーではなく警告)、ライブラリがうまく構築し、しかもを

unexpected token '@' 
unexpected token 'PRIVATE' 

EXPORTS 
    LibDescription @1 PRIVATE 
    LibInitialize @2 PRIVATE 
    LibVersion @3 PRIVATE 

の線に沿ってインテリセンスのエラーを生成します必要な機能をすべてエクスポートするので、リスト内の実際のコードエラーを確認するのが難しくなります。

この動作が期待されていますか、それともどこかで紛失している設定がありますか?

編集:コメントにも示唆されているように、コンパイラ出力ペインには言及されていないので、ほとんどのエラーはリンカから来ており、コンパイラではありません。

edit2:エラーを生成しているのは、実際にはインテリセンス、編集されたタイトルとタグです。

+0

リンカーエラーを意味しますか? '.def'ファイルはリンカーによって読み込まれます。コンパイラ自体がこれらのエラーを発生させた場合、 '.def'ファイルのビルドツールプロパティを誤って設定した可能性があります。 –

+0

@FrédéricHamidiリンカーエラーとコンパイラーエラーを区別する方法がわかりません。 Visual Studioのインタラクティブエラー/警告ウィンドウにエラーが表示されます。どのコンポーネントがエラーを生成しているのかわかりません。私はまた、ファイルのための 'ビルドアクション'パラメータを見つけることができません。 'アイテムタイプ'が 'ビルドに参加しません'に設定されています。 – Rotem

+0

うん、私はこの用語を誤用した。この設定は実際VS2010では 'Item Type'と呼ばれ、' .def'ファイルのためには 'buildに参加しません'が適切な値です(私は新しいプロジェクトでダブルチェックしました)。 'Output'ペインでエラーコードを確認できますか?コンパイラやリンカから来たものかどうかは確かに分かります。 –

答えて

1

問題は、私はがインストールされているVisual Studio用Pythonのツールを持っていたことだったと私はそれがdefファイルは、Pythonのソースコードだと思ったとします。 Pythonツールをアンインストールすると、私の問題が解決しました。

0

問題の簡単な説明はありません。だから私たちが知らないことがあります。おそらく、この問題が発生していないサンプルVS2010 DLLプロジェクトのスクリーンショットから見ることができます。あなたと慎重に比較してください。

enter image description here

+0

イメージありがとう、ハンス。私があなたの例のように 'EXPORTS'で始めるなら、すべてが問題ありません。問題は 'LIBRARY'で始まるときに始まります。 'LIBRARY'の後に来るものは、予期せぬトークン*エラーを受け取ります。 'LIBRARY MyLibrary.dll'は*予期しないトークン 'MyLibrary' *を返し、その後はすべてが予期しないトークン*エラーを返します。 – Rotem

+0

申し訳ありませんが、私の前のコメントはあなたの例でも間違っています*予期しないトークンLibDescription *を取得します。 – Rotem

+0

問題が見つかりました!私はVisual Studio用のPython Toolsをインストールしていましたが、何らかの理由で.defファイルがPythonコードファイルであると思っていました。それをアンインストールすると問題は解決しました。 – Rotem

関連する問題