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

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

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

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

C++

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

Q&A

解決済

3回答

4697閲覧

Visual Studio でDLLファイルが原因でデバッグできない

nguyenseiji

総合スコア156

Visual Studio

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

C++

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

0グッド

0クリップ

投稿2021/03/31 06:02

編集2021/03/31 09:51

イメージ説明

イメージ説明

イメージ説明

イメージ説明!

イメージ説明

イメージ説明

イメージ説明

お世話になっております

Visual Stusdio c++ の初心者です

DLLを使ったプログラムを書きたいのですが

デバッグ時にエラーになってしまいます

エラー内容

Unable to Start Program (dllのファイルパス)

(dllのファイルパス) is not a valid win32 application

これはどこか設定が必要なのでしょうか

色々、調べてみたのですが解決せず,,,

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

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

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

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

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

dodox86

2021/03/31 07:46

手順を自己流(?)でやっているのでややこしいことになっているのだと思います。Visual Studio のバージョンの詳細(2017とか、2019、Communityエエディションなど)も、質問文中に追記しましょう。
guest

回答3

0

ベストアンサー

まず、1つのソリューションに2つのプロジェクトという上級者向けのややこしい構成をやめて1つのソリューションには1つのプロジェクトにした方が良いです。
ワケわからんことになってます。
最初からやり直しをお勧めします。

投稿2021/03/31 08:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

nguyenseiji

2021/03/31 09:00

ゲームとゲームエンジンは別で管理したいのでGitHubなどで 一応別のソリューションにしています。。
退会済みユーザー

退会済みユーザー

2021/03/31 09:04

FocusEngineというDLL用のプロジェクトにAddの既存のプログラムを追加でexeファイル形式の BORDERプロジェクトを追加して 最初にやった↑これがワケわからんことをまねいています。
nguyenseiji

2021/03/31 09:07

...いろんなところにDLLファイル追加してみます ゲームエンジンはどうしても別で管理したいので
退会済みユーザー

退会済みユーザー

2021/03/31 09:12

FocusEngineというDLL用のプロジェクトにAddの既存のプログラムを追加でexeファイル形式の BORDERプロジェクトを追加して いや、別で管理したいなら尚更↑これはやめた方が良いです。 FocusEngineプロジェクト単独と BORDERプロジェクト単独の構成にしないと。 2つのプロジェクトがごちゃごちゃに絡みあっています。
退会済みユーザー

退会済みユーザー

2021/03/31 09:23

まず、新規でFocusEngineプロジェクトを作る。 それから、一旦FocusEngineプロジェクトを完全に閉じて、新規でBORDERプロジェクトを作る。 この手順で作り直して下さい。
退会済みユーザー

退会済みユーザー

2021/03/31 09:27

Addがワケわからんことをまねいています。
退会済みユーザー

退会済みユーザー

2021/03/31 09:45

FocusEngineというDLL用のプロジェクトにAddの既存のプログラムを追加でexeファイル形式の BORDERプロジェクトを追加して ↑これのためにデバッグのターゲットがdllになっていると思います。デバッグのターゲットをexeにしないと。
nguyenseiji

2021/03/31 09:58

できました!!!!! やっと続きができます ありがとうございました!!!!!!!
退会済みユーザー

退会済みユーザー

2021/04/01 04:38

どっちで解決しましたか? プロジェクトを作り直し? デバッグのターゲットを変えただけ? 今後の参考にしたいので教えて下さい。
guest

0

デバッグ実行ではなく、.exeをダブルクリックでもdllをload出来ないのでしょうか?
だとしたら、そこにdllが無いからでは?

ん?
上の人の回答を見て、、
質問文からは、dllを呼び出す.exeを作ってるのかと思ったらdllを作りたいんですか?

投稿2021/03/31 06:09

編集2021/03/31 06:15
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

nguyenseiji

2021/03/31 06:27

返信ありがとうございます。 FocusEngineというDLL用のプロジェクトにAddの既存のプログラムを追加でexeファイル形式の BORDERプロジェクトを追加してBORDERの方をデバッグしているのですがエラーになってしまいます 参考サイト https://www.youtube.com/watch?v=KG8cAGvn9d4&list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT&index=4 こちらに少し変更を加えてAddで新規のexeプロジェクトを追加するのではなく 別で新規に作ったexeプロジェクトをAddから追加しています
nguyenseiji

2021/03/31 06:28

FocusEngineであるDLLをBORDER(exe)から呼び出したいです
退会済みユーザー

退会済みユーザー

2021/03/31 06:33

dllのプロジェクトのデバッグ設定で実行ファイルとして.exeを指定すれば良いと思います。
退会済みユーザー

退会済みユーザー

2021/03/31 06:38 編集

あー、違う、それなら、BORDERの方のプロジェクトのexeのあるフォルダにdllを放り込んでデバッグ実行しないと。
nguyenseiji

2021/03/31 06:39

返信ありがとうございます。 Configuration Type を Appliocation(.exe)に変更するという事でしょうか...
退会済みユーザー

退会済みユーザー

2021/03/31 06:43

BORDERプロジェクトって既にあるのでは? そこにdllを放り込むだけです。
nguyenseiji

2021/03/31 06:52

FocusEngineのDLLファイルをコピー&ペーストでBORDERにコピーしたのですが やはりエラーになってしまいます 試しに再ビルドもしたのですが同じ結果です.. 初歩的な質問ですみません どうかご教授いただければ幸いです。
nguyenseiji

2021/03/31 06:54

こちらBORDERをビルドした際に下記のエラーがでてしまいます Error LNK1104 cannot open file 'C:\Users\seiji\Documents\FocusEngine\bin\Debug-x64\FocusEngine\FocusEngine.lib
退会済みユーザー

退会済みユーザー

2021/03/31 06:54

そこじゃない。 debugのexeがあるフォルダ
nguyenseiji

2021/03/31 06:55

dllにlibは関係があるのでしょうか
退会済みユーザー

退会済みユーザー

2021/03/31 06:56

リンクの入力設定にFocusEngine.libを追加
退会済みユーザー

退会済みユーザー

2021/03/31 06:59

c++なら関係ある。あるいはLoadLibraryを使うか。そっちの方がめんどくさい。 C#とかVBなら関係ない。
nguyenseiji

2021/03/31 07:08 編集

上記画像のようにlibファイルを追加したのですがビルドエラーになってしまいます 試しにCからのフルパスを指定してみたのですがそれもエラーでした すいません これってどのように指定するのでしょうか 上記画像を参考
退会済みユーザー

退会済みユーザー

2021/03/31 07:16

ビルドのエラーメッセージを見るとそこにlibファイルがないからでは?
退会済みユーザー

退会済みユーザー

2021/03/31 07:18

なんか俺の設定画面と違う。
退会済みユーザー

退会済みユーザー

2021/03/31 07:22

そんな画面開かなくてもkernel32.libの左に直接書いてセミコロンで区切ればいい
退会済みユーザー

退会済みユーザー

2021/03/31 07:28

先にdll側をビルドした?
nguyenseiji

2021/03/31 07:30

はい FocusEngineの方を先にビルドして その後にBORDERをビルドしております..
退会済みユーザー

退会済みユーザー

2021/03/31 07:47

FocusEngine.libが出力されてないね。 デフォルトの設定なら出力されるはずなんだけど、、、
dodox86

2021/03/31 07:49

>@質問者さん。 この際大したことではないのですけど、それはGoogleドライブではなく。マイクロソフトのOneDriveです。
退会済みユーザー

退会済みユーザー

2021/03/31 08:06

わかった。 エクスポート関数のPrintを消してmainにしちゃってるからだ。 dllにmainなんか作っちゃダメだよ。
退会済みユーザー

退会済みユーザー

2021/03/31 08:15 編集

mainを作っちゃダメだし、何よりもエクスポート関数を消しちゃダメだよ。
nguyenseiji

2021/03/31 08:24

ご返信ありがとうございます。 main関数の方、修正完了しました 確かにexeじゃないのにmainは不自然ですね... エクスポート関数とはどういったものでしょうか すいません、かなりの初心者で.. includeの事でしょうか
退会済みユーザー

退会済みユーザー

2021/03/31 08:27

dllというのはmain以外の関数群で構成されており、dllが他のdllやexeに直接使って貰う関数がエクスポート関数です。
退会済みユーザー

退会済みユーザー

2021/03/31 08:33

「エクスポート(export)」は「輸出」になります。 パソコンでは一般的に、他のアプリケーションで作成したファイルを読み込んで利用できるようにすることを「インポート」、他のアプリケーションで読み込める形式に出力する作業のことを「エクスポート」と言います。
nguyenseiji

2021/03/31 08:34

なるほどですね ありがとうございます。 DLLの方にエクスポート関数を追加したのですが やはりビルド時にcannot open file FocusEngine.libになってしまいます..
退会済みユーザー

退会済みユーザー

2021/03/31 08:36

FocusEngine.libファイルを適切なフォルダにコピーしてやれば良いと思います。
退会済みユーザー

退会済みユーザー

2021/03/31 08:41

それと、includeは.hを指定して下さい。 .cppをincludeしないでください。
nguyenseiji

2021/03/31 08:47

ありがとうございます! ビルド時のlibのエラ-は解消しました ですがやはりデバッグ時に Unable to start program focusEngine.dll とでてしまいます... dllファイルはBORDERのexeが入っているフォルダとBORDERのslnフォルダにも入れました...
退会済みユーザー

退会済みユーザー

2021/03/31 08:49

何を実行しましたか?
nguyenseiji

2021/03/31 08:53

BORDERのApplication.cppになります FocusEngineのFocus::Print(); を実行したいです... 上記画像を参考
nguyenseiji

2021/03/31 10:00

できました!!!!! やっと続きができます ありがとうございました!!!!!!!
guest

0

(dllのファイルパス) is not a valid win32 application
これはどこか設定が必要なのでしょうか

メッセージの仰せのとおり、DLLはアプリケーションではありませんから実行できません。

DLLを使う(callする)なにがしかの.exeを用意し、そいつをdebug実行せんならんです。

投稿2021/03/31 06:09

episteme

総合スコア16614

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問