none
DLLの作成例を試したが問題がある RRS feed

  • 質問

  • はじめて使うVisualStudio2019コミュニティで、ある機能のDLLを作成したく、マイクロソフトのページの
    チュートリアル: 独自のダイナミック リンク ライブラリを作成して使用する (C++)
    https://docs.microsoft.com/ja-jp/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=vs-2019
    を参照して、手順に従い進めましたが、
    ”DLL に実装を追加するには”の項目から
    ”エディターで、MathLibrary.cpp ファイルの内容を次のコードに置き換えます。”
    としたところ、先頭の下記部分の
    // MathLibrary.cpp : Defines the exported functions for the DLL.
    #include "stdafx.h" // use pch.h in Visual Studio 2019
    #include <utility>
    #include <limits.h>
    #include "MathLibrary.h"
    の所で下記のエラーが出ます。
    重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
    エラー (アクティブ) E1696 ソース ファイルを開けません "stdafx.h" MathLibrary C:\Users\qhtsi\source\repos\MathLibrary\MathLibrary\MathLibrary.cpp 2 
    エラー C1010  プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "pch.h"' をソースに追加しましたか? MathLibrary C:\Users\qhtsi\source\repos\MathLibrary\MathLibrary\MathLibrary.cpp 57 

    stdafxが見つからないということですが、これを解決する方法がわかりません。それぞれの.cppファイルのプロパティのプリコンパイルヘッダーは使用するになっています。
    プリコンパイルヘッダを使用しない方法もあるようですが、そうではなく、できればstdafx.hを所定の場所に格納する方法で解決したいと思います。
    どのようにすればよいでしょうか。stdafx.hを探して、このフォルダにコピーするのでしょうか。どこにあるかもわかりません。
    サンプルコードをコピーしただけなのに、なぜこのようなサンプルコードになっているかも知りたいところです。

    VisualStadio自体は初めてです。以前からtryしていますが成功していません。

    なお32ビット用のDLLです。windows10です。Vs2019のバージョンは16.2.2です。



    2019年8月18日 14:10

すべての返信

  • #include "stdafx.h" // use pch.h in Visual Studio 2019
    初心者には不親切かもしれませんが、このコメント(太字で強調しました)に書かれている通りではないでしょうか?
    「Visual Studio 2019 なら(stdafx.h ではなく)、pch.h を使う」という意味ですし、エラーメッセージも「#include "pch.h" をソースに追加しましたか?」というように、記載漏れを疑うヒントが出ていますね。
    2019年8月18日 14:21
    モデレータ
  • 早速のご返事ありがとうございます。
    それらのエラーメッセージは見ましたが意味がよくわかりませんでした。
    1.#include "stdafx.h" // use pch.h in Visual Studio 2019
    この意味は
     stdafx.hをvs2019では(pch.hを使うので)pch.h中でstdafx.hを使う(それがあることを期待)がそのstdafx.hが見つからないと言うことと思いました。
    なので、stdafx.hをしかるべき場所に置かねばならないと思いました。
    2.「#include "pch.h" をソースに追加しましたか?」
    サンプルコードを使っただけなので、意図的に何かを変更したとは思わないので、意味がわかりませんでした。
    で、どのように解決すればよいかよくわからなかったのです。

    ネットでの調べなどでは、stdafx.hは標準的に(必ず使う?)使うヘッダをまとめておく(まとめられている?)もので、pch.hは毎回使うヘッダのコンパイル時間を短縮するためにプリコンパイルしておいてコンパイル時間を短縮するために使うことにあると思いました。。
    似たようなエラーの場合プリコンパイルヘッダを使用しない方法もあるようですが、ここでは標準的に見える使う方法でやってみたいとの思いもあります。

    よろしくご教示をお願いします。


    2019年8月18日 23:05