2012-01-13 11 views
1

私は最初にEclipse(mingwコンパイラ)でプログラムを作成しました。今私はコードをVisual Studio 2008に翻訳しています。 これは複数のプロジェクトを持つ1つのソリューションです。 2つのプロジェクトは、(コンソール)プログラムを実行するためのものです。他の2つのプロジェクトはそれらのヘルパークラスです。プロジェクトが正しい順序でコンパイルされるようにプロジェクトの依存関係を設定しました。 ヘルパープロジェクトにメインがないので、エラーメッセージLNK2019とLNK1120が表示されるようになりました。 私はリンクせずにヘルパープロジェクトをコンパイルしようとしましたが、私はそれをどうすればいいのかわかりません。私は、-cコンパイラオプションを追加しようとしましたが、失敗しました。私もヘルパープロジェクトに無用なメインを追加しようとしましたが、実際のメインコンパイルで "関数はオーバーロードできません"というコンパイルが失敗します。複数のプロジェクトを持つビジュアルスタジオソリューションはコンパイルされません

どのように私はこれを修正することができます私はメインなしでヘルパープロジェクトを持つことができますか?

答えて

3

あなたの代わりにConsole Application

+1

プロパティ - >一般 - >設定タイプを静的ライブラリに設定していただきありがとうございます。問題を修正しました – user1147747

1

ヘルパーを静的ライブラリとしてコンパイルし、メインプログラムにリンクすることができます。

0
  1. のプロジェクトの種類Class Libraryを使用する必要がヘルパーライブラリを作成したい場合は、独立して、全体のそれらをコンパイルするために、ソリューションエクスプローラでプロジェクト(複数可)を右クリックします溶液。また、をそれぞれにビルドして、コンパイルとリンクの両方を実行することもできます。

  2. (Windowsについてはわかりませんが)DLLにはまだエントリポイントが必要です。従来の名前はDllMainです。エントリポイントが必要ない場合は、DLLの代わりに静的ライブラリを作成して、実行時に動的にロードするのではなくリンク時にアプリケーションにリンクさせる必要があります。

    ダイナミックライブラリではなく、静的ライブラリを作成するようにプロジェクトのプロパティを変更する必要があります。これにより、リンカーはmain機能を検索しなくなります。 this walkthroughが役に立ちます。

    追加したダミーのmain機能に間違った署名が含まれているため、「関数はオーバーロードできません」というエラーが考えられます。

関連する問題