57272


Visual StudioでOpenGLを使ったアプリケーションを作成し、インストーラーも作りました。

開発用コンピューター内でインストーラーを実行するとうまく動きました。  
しかし、別のコンピューター内でインストーラーを実行すると

"openal32.dll"  
"ucrtbased.dll"  
"vcruntime140d.dll"

以上のファイルが存在しない旨のエラーが出ました。

どれもdllが存在しないってだけなので、開発用コンピューター内から該当するdllファイルを持ってくることでこのエラーは消えましたが、別のエラーが発生しました。

[code]

    "アプリケーションを正しく起動できませんでした。(0xc000007b)"
    
[/code]

開発用コンピュータで動作しているため、32bitバイナリデータに64bitのdllを入れてしまっているというミスも考えにくく詰まっています。

何か解決できそうな情報がある方は教えてください。

(ちなみに開発用コンピューターと別のコンピューター1台ずつの検証でしたので合計2台でしか検証できていません。しかし十分だとも思いますが。)

* * *

### 追記1

別コンピューターのグラフィックドライバは最新でした。

また、  
別PC = Windows 10 Pro (64bit) , Intel HD Graphics 4400  
開発PC = Windows 10 Enterprise (64bit) , Intel HD Graphics 4000  
です。

* * *

### 追記2

Visual Studioのビルドモードを確認しました。

[![画像の説明をここに入力](https://i.stack.imgur.com/fzxwV.png)](https://i.stack.imgur.com/fzxwV.png)

これでCTRL+Bでリリース版がビルドできると思っていたのですが、違うのでしょうか？  
ビルド後のexeとその関連ファイルはReleaseディレクトリ下に生成されました。

* * *

### 追記3

ランタイムパッケージのインストールを別PCに行っていなかったためインストールをしました。  
しかし相変わらず

"ucrtbased.dll"  
"vcruntime140d.dll"

が要求され、

[code]

    "アプリケーションを正しく起動できませんでした。(0xc000007b)"
    
[/code]

も同様でした。dllも32bit用を使用しているみたいなのですが。

もうしばらく頑張ってダメそうであればvsデータをすべて抹消してvsデータの作り直しをします。  
なぜデバッグモードになってしまっているのか...  
できれば今後の方のためにも解決したいところです

* * *

### 追記4

「構成マネージャー」と「プロパティ -> C/C++ -> コード生成」の画像を追加しました。

[![画像の説明をここに入力](https://i.stack.imgur.com/bBCIb.png)](https://i.stack.imgur.com/bBCIb.png)

[![画像の説明をここに入力](https://i.stack.imgur.com/sc0UI.png)](https://i.stack.imgur.com/sc0UI.png)

* * *

### 追記5

念のため、元々"C++によるデスクトップ開発"ワークロードでしたが"ユニバーサルWindowsプラットフォーム"ワークロードで再構成してみることにします。


CC BY-SA 4.0
2019-08-09T08:39:01.667
57271
2019-08-22T02:46:21.990
2019-08-22T02:46:21.990
3060
27305
question
c++ visual-studio
Visual Studioで作成したアプリが別のPCで動作しない


"ucrtbased.dll"  
"vcruntime140d.dll"

最後に d が付いているのはデバッグモード用でしょう。  
コンパイル時のDebug/Releaseモードが混在しているのではないですか？

x86は32bitモードを表しています。

インストールパッケージ内に単一の.exeだけが存在するなら考えにくいですが、  
大概は.dllも使うか作るかするはずなので、どれかがデバッグモード用でコンパイル  
あるいはリンクされているのでしょう。  
(コンパイルのモードはReleaseでもリンクの指定はDebug用とかもあり得るかも？)

それから0xc000007bは検索すると32bit/64bitの混在というのが出てきますね。  
[アプリケーションエラー 0xc000007bで起動できない](https://hayakute.kantan-
sakusaku.com/windows/2018/0119165256/)  
可能性は無くは無いです。

* * *

vcruntime140(おそらくucrtbaseも)については、使っているVisualStudioの版数2015/2017/2019と32bit/64bitに対応した再頒布可能パッケージをダウンロードしてインストールしてください。  
[最新のサポートされる Visual C++ のダウンロード](https://support.microsoft.com/ja-
jp/help/2977003/the-latest-supported-visual-c-downloads)  
対応版数が違ってもみんな同じファイル名なので注意してください。  
開発用PCの中からファイル名だけで拾ってくると、間違いやすいでしょうし、ランタイムのバグ修正等に対応できなくなります。

Windows 8.1以前用のucrtbaseはこちらかも。  
[Windows での汎用の C ランタイムの更新プログラム](https://support.microsoft.com/ja-
jp/help/2999226/update-for-universal-c-runtime-in-windows)

* * *

関連は無いですが、私が以前に回答を出した質問の中に、答えとは関係なくグラフィックスドライバを最新の物にしたら直ったというのがあったので、ドライバのアップデートも意味はあるかもしれません。

* * *

他に参考になるのはこの辺でしょうか。

[WindowsアプリケーションでOpenGLを使いたい](https://teratail.com/questions/104717)  
[Visual Studio
2017でOpenGLを動かせるようにする](https://qiita.com/SonoT/items/4387ec1c8d7af8979b35)  
[C言語でOpenGL：Visual Studio
2019のclコマンドでGLUTを使う](https://qiita.com/enonoco/items/d6241fc99d050f6a5c00)  
[再頒布可能パッケージ 現在のバージョンのWindows C++用OpenGLをインストールするにはどうすればよいですか?](https://code-
examples.net/ja/q/11201cd)  
[その１ ライブラリのインストールとOpenGLの初期化](http://marupeke296.com/OGL_No1_Install.html)  
[windowsでopenGL環境を構築するための手順](https://qiita.com/kdotsaito/items/e34b32392099e1f13466)

* * *

.exe/.dllの依存関係を調べるなら、DependencyWalker(今はDependencies?)で調べられるのでは？  
[プログラムやDLLファイルの依存関係がわかる「Dependency
Walker」](https://webcli.jp/topics/dependencywalker/)  
[覚書 : Dependency Walkerはもう古い! Windows
10ならDependenciesを使え!](https://frontl1ne.net/2018/12/dependency-walker-is-too-
old-use-dependencies/)


CC BY-SA 4.0
2019-08-09T08:56:14.307
57272
2019-08-09T11:16:35.137
2019-08-09T11:16:35.137
26370
26370
57271
answer