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

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

新規登録して質問してみよう
ただいま回答率
85.31%
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

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

Q&A

解決済

1回答

715閲覧

MFCで作成したアプリを他のPCで使用する際のDLLの持って行き方が分からないので調査方法をお伺いしたい

akptaro

総合スコア29

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Visual Studio

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

0グッド

0クリップ

投稿2023/10/23 08:37

実現したいこと

MFCで作成したアプリを他のWindowsPCに持って行って実行出来るようにしたい。
今はDLLが足りないと言われ持ってきたらDLLのバージョン違いと警告が出る。

前提

開発環境:WindowsServer2019
実行環境:Windows10Pro

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

MFC実行して足りないと言われるDLLを
開発環境のDLLを実行環境のexeと同じフォルダに持ってきても
”アプリケーションを正しく起動できませんでした(0xc000007b)。[OK]をクリックしてアプリケーションを閉じてください”
と言われ実行出来ない

該当のソースコード

特になし

試したこと

今回はチャットGPTにバンバン聞きまくりましたが
Visual C++ Redistributableの最新バージョンをインストールするしか無いようで出来れば実行環境はサーバーの可能性が高いのでRedistributableをインストールしたくなく必要なDLLだけを持ってきたいのです。

そのような事は出来るのでしょうか?

理解しました。DLLのバージョンに関連する問題が解決されない場合、DLLファイルのバージョンを注意深く確認して正しいバージョンを使用することが重要です。DLLのバージョン違いは、0xc000007bエラーの一般的な原因の1つです。また、MFCアプリケーションを異なるPCで正常に実行できるようにするために、以下のポイントにも留意してください: アプリケーションのビット数: アプリケーションが32ビットまたは64ビットでビルドされているかに応じて、対応するバージョンのDLLファイルを使用してください。アプリケーションとDLLファイルのビット数が一致していることが重要です。 アプリケーションの依存関係: 依存するDLLファイルだけでなく、アプリケーションが他のコンポーネントに依存している場合も確認してください。必要なライブラリやランタイムが揃っていることを確認しましょう。 実行環境: ターゲットPCのWindowsバージョンや環境が、アプリケーションが正常に実行できるものであるかを確認してください。特に、Windowsアップデートやセキュリティポリシーが影響を与えることがあります。 エラーメッセージの詳細情報: エラーメッセージの詳細情報やイベントログを確認して、問題の特定に役立つ情報を収集しましょう。 デバッグツールの使用: デバッグツールを使用して、エラーが発生する具体的な箇所を特定し、問題の解決に役立つ情報を取得できるかもしれません。 再ビルドと再インストール: アプリケーションを再ビルドし、必要なDLLファイルと実行ファイルをターゲットPCに再インストールしてみてください。 最終的に、問題が解決しない場合、エラーメッセージの詳細情報やデバッグツールを使用して、問題の原因を特定するのに役立つ情報を収集することが重要です。問題が特定できない場合、アプリケーションのコードやビルド設定を再検討し、可能な限り問題を特定して解決できるよう努力してください。

との事ですがちょっと私には分からなかったです。
ビット数は64だし依存関係は分からないし……

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

特になし

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

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

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

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

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

fana

2023/10/23 08:45

スタティックリンク(DLLを使わない形)にすることはできないのでしょうか.
guest

回答1

0

自己解決

なのでfanaさんから教えて頂いたように
スタティックリンクへの変更方法は
https://replication.hatenablog.com/entry/2019/09/21/184911
に書いてある気がするので見てみると……

投稿2023/10/24 02:12

akptaro

総合スコア29

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

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

akptaro

2023/10/24 03:23

構成のプロパティがどこから行けるか分からない……
akptaro

2023/10/24 03:33

ビルド>構成マネージャー か…… ってそこには なかった…… どこに構成プロパティってあるんだろ???
fana

2023/10/24 04:17 編集

「ソリューションエクスプローラ」とかいうソースファイルとかのツリー表示しているところでプロジェクトを右クリックして「プロパティ」を選ぶ,という操作でいつも出しているけど, あらためて見てみたらば VisualStudioのメインメニューに「プロジェクト」→「プロパティ」っていうそのものがあるじゃんっていう. つーか,そういうときこそ「visualstudio 構成 プロパティ」とかググれば良いのでは!
akptaro

2023/10/24 05:30

fanaさん ありがとうございます。そこの記載の”構成プロパティ”には https://replication.hatenablog.com/entry/2019/09/21/184911 上記URL記載のように プロジェクトの既定値がどこに表記してあるのか見つけられないのです…… オプションでもないし…… VisualStudio2022上の検索から”プロジェクトの既定値”と検索しても見つからないのです…… どこにも”MFCの使用”が見つからないので困っているのです…… VisualStudio2022はデフォルトでMFCが入っていないので新規に入れたのでそういった項目は無いのは理解しているのですが”スタティックライブラリでMFCを利用する”としたいのです。 どのように検索すれば良いのかご助力頂ければ嬉しく思います。 本当に申し訳ございません。
akptaro

2023/10/24 06:10

ってChatGPTに聞いたら ================ VisualStudio2022でMFCを利用してアプリを作成しております。配布するためにスタティックリンク(DLLを使わない形)にしたいのですがどのようにすれば良いのかご助力頂けないでしょうか? ChatGPT Visual Studio 2022でMFC(Microsoft Foundation Classes)を使用してアプリケーションを作成し、スタティックリンクを行うためには、以下の手順を実行することができます。スタティックリンクを行うと、アプリケーションが依存するMFC関連のDLLを含めずに単一の実行可能ファイルを生成できます。 プロジェクトの設定を変更: Visual Studio 2022で作成したプロジェクトを開きます。 ソリューションエクスプローラーで、プロジェクトを右クリックし、プロパティを選択します。 プロジェクトの設定を構成します: 構成プロパティから、構成(Configuration)とプラットフォーム(Platform)を選択します。通常、Release構成を選択することが一般的です。 C/C++ > Code Generation(コード生成)を選択し、ランタイムライブラリ(Runtime Library)を "Multi-threaded" または "Multi-threaded (/MT)" に設定します。これにより、CRT(Cランタイムライブラリ)をスタティックリンクで組み込むようになります。 MFCの設定: Configuration プロパティから、MFCを選択します。 Use of MFC(MFCの使用)を "Use MFC in a Static Library" に設定します。これにより、MFCがスタティックライブラリとしてリンクされます。 その他の設定: 必要に応じて、プロジェクトのその他の設定を調整します。これにはリンカー設定、リソースファイルの設定、およびプロジェクトの依存関係などが含まれます。 プロジェクトをビルド: プロジェクトをビルドします。これにより、スタティックリンクされた実行可能ファイルが生成されます。 これで、MFCを使用したアプリケーションをスタティックリンクにすることができます。スタティックリンクされた実行可能ファイルは、依存するDLLを含めずに他のシステムで実行できます。注意点として、スタティックリンクを行うと実行ファイルのサイズが大きくなる場合があるため、デプロイメントの際にはファイルサイズに注意が必要です。 ---------------------------- と返答頂いたので見てみます。
akptaro

2023/10/24 06:16

うっ 誤った情報じゃないでしょうか? と問い合わせたら以下のように修正して来ましたので見てみます。 ---------------------------- 申し訳ありません、以前の回答に含まれていた指示がVisual Studioの古いバージョンに関連するもので、Visual Studio 2022では少し異なる場所に該当する設定があります。Visual Studioのバージョンが進化したため、設定の場所が変わることがあります。 Visual Studio 2022でスタティックリンクを行うには、次の手順に従ってください: プロジェクトを開きます。 ソリューション エクスプローラーで、プロジェクトを右クリックし、プロパティを選択します。 構成プロパティを展開し、構成(Configuration)を選択します。通常、Release 構成を選択します。 VC++ Directories(VC++ ディレクトリ)を展開し、"Library Directories" を選択します。この場所はライブラリファイルが格納されている場所を示します。ここで、必要なライブラリへのパスを追加します。 C/C++ > Code Generation(コード生成)を選択します。 ランタイムライブラリ(Runtime Library)を "Multi-threaded" または "Multi-threaded (/MT)" に設定します。これにより、C ランタイム ライブラリがスタティックリンクで組み込まれます。 これにより、MFCをスタティックリンクに設定し、C ランタイム ライブラリをスタティックリンクすることができます。 Visual Studio 2022のバージョンによっては、設定の詳細な場所や項目名が異なる場合があるため、バージョンによって若干の違いがあるかもしれません。しかし、上記の手順に従うことで、スタティックリンクを達成できるはずです。 ----------------------------
akptaro

2023/10/24 08:05

で色々あってなんかMFCが実は入っていなかった事が判明…… だけど開発出来ていたのは ``` MFCのアプリケーションが開発できたのは、おそらくVisual Studio 2022には、最新のV143ビルドツール用C++ MFCが必要ない場合、ダイナミックリンクとしてMFCライブラリが利用されていた可能性があります。ただし、最終的には必要なライブラリを正しくインストールして設定することが重要です。 最新のV143ビルドツール用C++ MFCをインストールし、プロジェクトの設定をスタティックリンクに変更したら、問題なくMFCを使用したアプリケーションを開発できるはずです。お手伝いできてうれしいです。質問があればいつでもどうぞ。成功をお祈りしています! ``` との事
akptaro

2023/10/25 08:11

出来ました。 解決方法は VisualStudio2019で "MFC アプリケーション ウィザード" が表示されるはずです。ここで "単一文書" や "単一ビュー" を選択せず、"ダイアログ ベース" で作成する事で出来ました。 関係ないメモを表記して失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問