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

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

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

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Visual Studio

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

Q&A

0回答

538閲覧

VS2017で出力DLLのサイズが小さくなった

shinya0114

総合スコア1

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Visual Studio

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

0グッド

0クリップ

投稿2020/04/23 00:06

Windows10のVisual studioでDLLを開発しています。
今まで、VS2015で開発していたのですが、VS2017にバージョンアップしました。

すると、VS2015で作成していたものは、正常に動作していたDLLが、VS2017に移植したDLLが動作しなくなりました。
その原因が分からないのですが、
VS2015で作成していたDLLのサイズはDebug版で12MBありました。
ところが、VS2017で作成したDLLのサイズが2MBしかありません。

この為に、動作しなくなったと考えられるのですが、
VS2017でDLLがうまくリンクされていなくて、サイズが極端に小さくなってしまったのだと思います。

サイズが小さくなってしまった原因として考えられることは、
何があるでしょうか?

以上。ご教授下さい。

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

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

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

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

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

y_waiwai

2020/04/23 00:12

まずはなぜ動作しないのかを追求することではないですか? わざわざアカの他人に聞く意味がわかりませんが
shinya0114

2020/04/23 00:20

作成しているのは、CADのアドオンのDLLです。 CAD本体のバージョンアップに伴い、アドオンのDLLもVS2017にバージョンアップしなければならなくなりました。 それで、VS2017に移植したのですが、サイズが極端に小さくなって、CAD本体がアドオンと認識してくれなくなりました。 それで、サイズが小さくなった原因を知りたいのです。
takasima20

2020/04/23 00:31

サイズに関しては static か shared かが絡んでる気がするけど、なんか調整がいるんじゃないスか?
dodox86

2020/04/23 00:40

Win32ネイティブのDLLですか? .NETアセンブリではないのですよね。リリースビルドにしていて小さくなってしまったなどと言うことはありませんか。
dodox86

2020/04/23 00:45

前はデバッグビルドでビルドしていたのでデバッグ情報も含め、サイズが大きかった >>> 今回、VS2017に移行して、勢い余ってリリースビルドでビルドしてしまったが、デバッグ情報が削除された上にさらにコードも最適化され、サイズが極端に小さくなった。おまけにコードが最適化されたが故に潜在的なコードの問題が顕在化して、動かなくなってしまった。 ...と言うケースはよくあります。
shinya0114

2020/04/23 00:47

Win32ネイティブのDLLです。記述したサイズはいずれもデバッグ版の数値です。
dodox86

2020/04/23 00:52

では、デバッグシンボル情報が欠けていたりするのではありませんか。通常、リンクに失敗すればDLLファイルは作成されません。もしくはファイルは存在するけど、ビルドの途中で失敗していて本当に壊れてしまっているとか。ビルド時のメッセージを確認してみてください。dumpbin.exe などで検証できるファイルになっているのか、あるいは先にコメントいただいているように、Dependency Walkerが通るファイルになっているか試してみるとか。
dodox86

2020/04/23 00:54

いずれにせよ今のご質問内容では情報が少なく、(私も含めて)回答は手探り状態だと思います。
dodox86

2020/04/23 00:59 編集

ファイルサイズが小さくなったから動かなくなったのではなく、動かないDLLファイルのいち側面としてみたら、VS2015ビルド時のものより極端にサイズが小さかった、と言うことだけなのです。一般的に考えて、動かなくなった原因は別のところにあります。(動いているんだけど、前のものよりファイルサイズが極端に小さい。それは何故ですか?と言う質問であれば成り立ちますが、そうではありません)
dodox86

2020/04/23 01:05

(先のtakasima20さんのコメント内容に絡んで)ビルドしているPCと、試すためにCADを動作させているPCが違っていたりしませんか。VCランタイムライブラリDLLのインストール状況のせいもあるかもしれません。ランタイムライブラリのスタティックリンク、ダイナミックリンクの設定に影響するはずです。
shinya0114

2020/04/23 01:08

DependencyWalkerで調べてみたのですが API-MS-WIN-CORE-APIQUERY-L1-1-0.DLL などの、API-MS-WIN-CORExxxxxのファイルが見つからない というエラーが出ていました。 どこか、プロジェクトの設定の問題でしょうか?
KOZ6.0

2020/04/23 01:20

構成プロパティの「全般」→「プラットフォームツールセット」はどうなっていますか?
shinya0114

2020/04/23 01:26

Visual Studio 2017(V141) となっています。
KOZ6.0

2020/04/23 02:52

うーむ、ここがバージョンアップされていないのかなと思いましたが違ったようです。 API-MS-WIN- のほかに足りないものはありませんでしたか?
shinya0114

2020/04/23 03:03

DG.DLL GSROOT.DLL GSUTILS.DLL INPUTOUTPUT.DLL VECTORIMAGE.DLL 等も、見つからないといっています。
KOZ6.0

2020/04/23 04:05

それらの DLL は CAD の関連ではないですか? 必要なものがインストールされていないのでは?
shinya0114

2020/04/23 04:16

確かにそうですね。 この関係で、API-MS-WIN-も関係するでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問