私は現在、Windows(MSVC)とLinux(Clangおよび/またはGCC)の両方をコンパイルする必要があるコード内のC++モジュールを使用しようとしています。
私は現在Visual Studioで開発しており、「標準適合モード」(/ permissive-)を使用してコードをできるだけポータブルとして使用しました。
ただし、次のコード
import std.core;
int main()
{
std::cout << "Hello, World! haha" << std::endl;
std::vector<int> myVec{4};
std::map<std::string, size_t> myMap;
return 0;
}
_
/ permissive-flagでコンパイルできません。次のエラーが発生します。
E3223インポートのためのモジュールファイル "std.core"が見つかりません
エラーC2664: 'int _crtdbgreport(int、const char *、int、const char *、const char *、...)': 'int'から 'cont char *'への引数4を変換することはできません。
私は "Std.core"がWindowsのみのものかもしれませんので、次のことを試してみました(多くの例でそれを見ました)。
import <iostream>;
import <vector>;
import <map>;
_
しかし、それは次のエラーをもたらします:
エラーC7612: 'path_to_vs\include\iostream'のヘッダーユニットを見つけることができませんでした
エラーC7612: 'path_to_vs\include\vector'のヘッダー単位を見つけることができませんでした
エラーC7612: 'path_to_vs\include\map'のヘッダーユニットを見つけることができませんでした
注:PATH_TO_VS\Includeの "iOStream"、 "Vector"、および "Map"という名前のファイルが実際にあります。
したがって、C++モジュールをインポートする標準的な方法は何ですか? 「Import Std.core」が標準的な方法である場合、なぜそれは/許可を編集しないのですか?
私はVisual Studio 2019(Community)とCmakeを使っています。
編集:
すみません、私は私のコンパイラのフラグを伝えるのを忘れました:
/experimental:module
/std:c++latest
/W4
/WX
/permissive-
/MDd
/EHsc
_
コードは/ permissive-なしでコンパイルされているが、設定されているときではありません。私は理由を理解することができません
https://docs.microsoft.com/en-us/cpp/cpp/modules-cpp?view=vs-2019 コンパイラスイッチを使用する必要があります。
プロジェクトの実験モジュールのサポートを構成するだけでなく。