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

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

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

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

Visual Studio

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

受付中

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

shinya0114
shinya0114

総合スコア1

DLL

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

Visual Studio

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

0回答

0評価

0クリップ

207閲覧

投稿2020/04/23 00:06

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

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

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

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

以上。ご教授下さい。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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-も関係するでしょうか?

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

DLL

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

Visual Studio

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