web-dev-qa-db-ja.com

ビルドは成功しましたが、.libファイルは作成されません

.libファイルを作成する(できる限り)Visual Studioプロジェクトを含む、かなりの量のコードを継承しました。 Visual Studioは「...コードを生成しています...ライブラリを作成しています...ブラウズ情報ファイルを作成しています...」と表示し、最後にビルドが成功したと表示します。 release/debugフォルダーには、多数の.objファイルがありますが、.libファイルはありません。何が欠けているのでしょうか?

ありがとう!

47
Jim

プロジェクトのプロパティを開きます(ソリューションエクスプローラーでプロジェクトを右クリックし、[プロパティ]を選択します)。 「Librarian」の下で「Output File」をチェックします-出力先です。

これが正しい場合は、dir /s *.libプロジェクトに適したサブディレクトリにあり、日付と時刻で出力ライブラリを見つけることができるかどうかを確認します。それでも見つからない場合は、クリーンな再構築を試してください(プロジェクトを右クリックし、[再構築]を選択します)。

DLLの場合、DLLが外部で使用するために何もエクスポートしない場合、.Libファイルは作成されません。これは静的libビルドに適用されるとは思いませんが、ライブラリプロジェクトのソースコード。

64
Steve Townsend

メソッドにプレフィックス__declspec(dllexport)を追加し忘れた場合、.libは生成されません。

15
snb

静的ライブラリには2つのテンプレートクラスしか含まれていないため、.cppファイルはありませんでした。これにより、Visual Studio 2015は.libファイルを出力しませんでした。これを解決するために、すべてのヘッダーを含むファイルhuh.cppを作成しました。

12
Grault

私もこの問題に出くわしました。

出力ディレクトリ定義で無効なマクロを使用したことが原因でした。私の場合、それは enter image description here

あるべき時

enter image description here

2番目のスクリーンショットでは、フルパスを空白にする必要がありました。間違ったマクロがありました。 MsBuildProjectDirを使用すべきだったときに、MsBuildProjectDirectoryを使用していました。読み取り専用のテキストボックスに完全なパスが表示されます(例:C:\Development\blah\blah\blah\)出力ディレクトリが有効な場合。出力ディレクトリが有効でない場合、最初のスクリーンショットのようなものが表示されます。

2
CHendrix

既に__declspec(dllexport)関数を使用していても、同じ問題がありました。

きみの ProjectName.cppファイルには#include "ProjectName.h"。ヘッダーファイルを含めない場合、関数はエクスポートされません。 DLLは正常にビルドされ、エラーや警告はありません(少なくともVS2017 15.8では)、ただしLIBファイルは取得できません。

ヘッダーとブームを含める-LIBファイルが生成されます。ルーキーの間違いは間違いないが、誰もがどこかで学習を始めなければならない。

2
Chuck

エクスポートするメソッドがクラスにある場合、そのクラスで__declspec(dllexport)する必要があります。それ以外の場合、.libは作成されません。

2
Crubuntu

DLLプロジェクトで、__declspec(dllexport).hおよび.cppファイルで定義されたメソッドの始まり。

結局、dllを再度コンパイルすると、.libファイルが生成され、リンクの準備が整います。

put Class Foo
{
public:
    __declspec(dllexport) int GetFoo() const;
0
Gravitas