質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1496閲覧

MFCアプリケーションで利用するためのDLLを作成したい

notgoodpg

総合スコア37

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/07/27 03:07

編集2018/07/27 04:10

前提・実現したいこと

MFCアプリケーション(群)で参照するためのDLLを作成したい。
そのためにDLLプロジェクトをビルドした際にインポートライブラリが生成されるようにしたい。
もしくはインポートライブラリの作成方法を学ぶことが出来るサイトを教えてほしい。

発生している問題・エラーメッセージ

DLLプロジェクトを作成、ビルドしてDebugフォルダにDLLファイルを生成しました。
ですがインポートライブラリのLIBファイルが生成されずMFCアプリケーション側からDLLのロジックを参照できません。
(DLLを作成するプロジェクトはインポートライブラリも生成するものと判断しています。参考

試したこと

ヘッダだけMFCアプリケーションのソースで#includeしたり、プロジェクトのプロパティ>リンカー>依存ファイルに生成したDLLを指定してもリンカーエラーが発生するだけでビルドを通すことも出来ません。
DLLプロジェクトはMSDNのサイトを参考に作成、設定しました。

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

  • Windows7/64bit SP
  • VisualStudio2015 SP1
  • C++/MFC

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoichiSugiyama

2018/07/27 04:23

DLLプロジェクトのプロパティの「リンカー」ー「詳細設定」にある「インポートライブラリ」はどういう設定になっていますか?
notgoodpg

2018/07/27 04:28

$(OutDir)$(TargetName).lib が登録されています。この要素は変更を行っていないのでデフォルト値ままだと思います。
KoichiSugiyama

2018/07/27 04:37

だとすると、DLLをビルドした際に、出力ウィンドウにlibファイルを出力した旨のログが出力されるはずですが、そこにフルパスでlibファイルのパスが書かれていませんか?l
notgoodpg

2018/07/27 04:47

確認してみましたがlibファイルの生成メッセージがありません。dllファイルのみ生成されてlibファイルは生成自体行われていないようです・・・。
KoichiSugiyama

2018/07/27 05:19

そうなるとMSDNにあった、「ビルドにエクスポート ファイル(.exp)が使われている場合は、インポート ライブラリが既に存在していると見なされます。したがって、インポート ライブラリは生成されません。」に相当するのかもしれませんね。
notgoodpg

2018/07/27 06:12

ということはデフォルトで有効になっているエクスポート ファイルの使用をやめさせる必要がありそうですね・・・。ありがとうございます。
KoichiSugiyama

2018/07/27 06:16

もし、そのやり方でうまくいったらご自身で回答を記入して自己解決にしておいてください。
guest

回答1

0

自己解決

以下の手順で一応、解決できました。

0. MFC DLLとしてプロジェクトを作り直す。 0. MFC DLLプロジェクトをビルドする。(MFC DLLプロジェクトでビルドするとDLL,LIBが生成された) (以下はおそらく通常通り) 0. MFC DLLプロジェクトで生成したDLL,LIBを呼び出し側のカレントにコピー 0. リンカー設定でLIBを追加の依存ファイルに追加 0. ヘッダを参照できるように呼び出し側の追加のインクルードディレクトリを更新 0. 呼び出し側のソースコード上でMFC DLLのヘッダを#inlclude

一応解決としますが、結局VS2015のWin32アプリテンプレートから作成したDLLを利用する方法はわからなかったので上記は回避策ですね・・・

「質問への追記・修正の依頼」欄でKoichiSugiyamaさんにアドバイスいただいた方向で修正を行わなかったのは
__「ビルドにエクスポート ファイル(.exp)が使われている場合は、インポート ライブラリが既に存在していると見なされます。したがって、インポート ライブラリは生成されません。」__に対してエクスポート ファイルを用いないビルド方法を探し出せなかったためです。

投稿2018/07/27 07:18

notgoodpg

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問