2009-03-10 22 views
2

Visual Studio 2008 Express Editionを使用して簡単なC++ DLLプロジェクトを作成しています。 名前空間内にいくつかのクラスがあり、静的でないいくつかの関数とコンストラクタが__declspec(dllexport)と宣言されています。 これらの機能はすべて実装されています。Visual StudioでC++ DLLを作成する

私はextern "C" BOOL APIENTRY DllMainという関数も持っています。これは単純にTRUEを返します。

私がDebug(またはRelease)を押すと、エラーや警告なしで正常にビルドされます。 出力フォルダ( "Debug /"または "Release /"のいずれか)は、ソースファイルごとに "BuildLog.htm"、1つの ".obj"ファイル、 "vc90.pdb"、 "vc90.idb"、 " DLLNAME] .dll.embed.manifest "、" [DLLNAME] .dll.embed.manifest.res "、" [DLLNAME] .dll.intermediate.manifest "ですが、DLL自体ではありません。

私はスタンドアロンC++を知っていて、以前にLinux C共有オブジェクトを作成していましたが、このプロジェクトをコンパイルしようとするのは初めてです(前回は正常にコンパイルされたことはありません)。

私は間違っていますか?特定の必須ファイルがありますか?

答えて

8

私は、ディレクトリ構造(ソリューションが入っているもの)で少し上を見て、あなたのDebug/Releaseフォルダ(DLL付き)があるかどうか確認したいと思います。

私は、プロジェクトディレクトリではなく、ソリューションディレクトリのフォルダに実際のDLLを配置するのがデフォルトだと考えています(私は、あなたが同じ場所に行くためのソリューションのために構築するすべてのDLLが必要だと考えています)

+0

ありがとうございました!私はそれがそこにあるとは決して考えなかった。過去に言葉がなかったので、それは私には完全に予期せぬものでした... – luiscubal

+0

@luiscubal:問題ありません:](あなたは確かにこれが起こった最初の人ではありません!) –

1

右、Solution Explorer View<ProjectsName>をクリックPropertiesを選択し、Configuration Properties > General]タブに移動し、Output Directoryフィールドをチェックしてください。パスは、$(SolutionDir)$(ConfigurationName)などのマクロで構成されます。Editを選択してから、ウィンドウが表示されたらMacrosを選択して、実際にどのような意味があるかを確認します。どのディレクトリにSolutionDirがマップされます。そこから出力dllのパスを推測することができます。

関連する問題