2016-06-23 5 views
0

DLLをコンパイルしてプロジェクトで使用したい。 (Windows Hooksを使用しており、実行時にロードする必要があるため、DLLでなければなりません)。詳細については、NugetのAllegro 5を使用しています。MSVS 2015 MSVCRTD.lib(exe_main.obj)のinvoke_mainで未解決の外部シンボル_mainを構築する

私は私のDLLをビルドしようとすると、私は次のエラーを取得しています:

LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" ([email protected]@YAHXZ) in file MSVCRTD.lib (exe_main.obj) 

私が原因構成の問題になりましプロジェクトを数回再作成しました。私の最新の反復は、Win32 Windowed Applicationであり、DLLはMulti Threaded Debug DLLランタイムでビルドされています。他のすべてのオプションを試してみましたが、残っているものはありません。

メインを検索する理由を理解できません。これはDLLです。 MSVSがあなたのために提供するので、私はそれが必要ではないと理解したので、私はDLLMainを提供していません。

DLLをコンパイルしようとすると、このビルドの問題をどのように解決できますか?

EDIT 解決策は#ALLEGRO_NO_MAGIC_MAINを定義することでした。 ALLEGRO_NO_MAGIC_MAINを定義しない限り、Allegroライブラリは主な機能を期待しています。問題が解決しました。

+0

設定で何か問題があるため、おそらくメインを探しています。メインは、exeのために必要とされ、それはあなたがdllを構築したいにもかかわらず、それはexeを構築したいようにビルドに何かがあります。 Visual Studioを使用している場合は、ウィザードを使用してdllプロジェクトを作成し、設定を自分のものと比較します。 – Niall

+0

私はすでにDLLプロジェクトを作成するために使っています。それは動作しません。私はあなたが私に何をしたいのか分かりません。私は新しいプロジェクトを作成し、Win32アプリケーションを選択し、次にヒットし、DLLプロジェクトを選択してからokと答えました。それは構築されません。 – MarcD

+0

設定はWindowsサブシステムを使用し、設定タイプはDLLです。それは依然として_mainを要求します。 – MarcD

答えて

1

解決策は、Allegro 5ヘッダーを含める前に#ALLEGRO_NO_MAGIC_MAINを定義することでした。 Allegroは主な機能を期待しているので、リンカーがそれを探していたのです。