私はvideoを見て、「Visual Studio 2015 Update 1」のニュースを見て、実験的なC++モジュールサポート(約8分)を挙げました。これまでのVisual Studio 2015のC++モジュールで何ができますか?
このバージョンで実際にどのくらいの機能がサポートされていますか?
誰かがVisual Studio/experimentalスイッチで動作するコード例を表示していたら、私はそれを使い始めることができます。
私はvideoを見て、「Visual Studio 2015 Update 1」のニュースを見て、実験的なC++モジュールサポート(約8分)を挙げました。これまでのVisual Studio 2015のC++モジュールで何ができますか?
このバージョンで実際にどのくらいの機能がサポートされていますか?
誰かがVisual Studio/experimentalスイッチで動作するコード例を表示していたら、私はそれを使い始めることができます。
@ dxivの答えにリンクされているビデオの手順に基づいて、Update 1 RTMで作業する簡単な例を得る方法は次のとおりです。
まず、モジュール定義ファイルmine.ixx
。コンパイル:cl /c /experimental:module mine.ixx
。 、
module mine;
export
{
int sum(int x, int y);
}
int sum(int x, int y) { return x + y; }
次main.cpp
モジュールを使用していますcl /c /experimental:module main.cpp
でコンパイルします。これはmine.obj
とmine.ifc
を行います。これはmain.obj
を行います:
#include <iostream>
import mine;
int main()
{
std::cout << sum(2000, 15) << std::endl;
return 0;
}
はその後link *.obj
でこれらをリンクし、あなたはmain.exe
を取得する必要があります。
これは、モジュールが課す注文要件を理解していないため、現時点ではVS内部からうまく機能しないことに注意してください。これを行うにはプロジェクトファイルを手動で変更する必要があります。
「モジュールで大規模C++:あなたがを知っておくべきこと」ガブリエル・ドス・レイスのCppCon 2015プレゼンテーションを参照してくださいhttps://www.youtube.com/watch?v=RwdQA0pGWa4で
http://nibblestew.blogspot.com/2015/10/some-comments-on-c-modules-talk.htmlから:。
モジュールは(で使用されている方法foo.cppというソースファイルがあり、Foobarモジュールを定義しています。これをコンパイルするには、次のように記述します:
cl -c/module foo.cxx
コンパイラはfoo.oとFoobar.ifcを出力します.Foobar.ifcにはモジュールのバイナリ定義が含まれています。これは、基本的にはFortranがそのモジュールを[...]と同じ方法で参照Foobar.ifc
:
CL -c baz.cpp /モジュール:これを使用するには、このような第2のソースファイルをコンパイルします
VS2015アップデート1で動作しませんRTM –
@DmitriNesterukアップデートいただきありがとうございます。今日、特に "実験的な"機能を使って物事が速く動いています。 – dxiv
VS2015アップデート1 RTMでは、代わりに/experimental:module /module:import
を使用してください。
これは '/ module:reference'、'/module:import'はエラーを返します – porges
私はこの答えが好きです。しかし、私はこのソリューションをバットからすぐには使用できませんでした。後でリンカエラーを避けるために、/ MDスイッチを2番目のコンパイラステップに追加する必要がありました。異なるセットアップがあるかどうかはわかりません(Visual Studioのバイナリフォルダからすべてを実行しました)が、誰かが同じ問題を抱えていると言わなければならないと思いました。 – 01F0
VSでは、モジュールのdefファイルを作成できますが、その拡張子はixxではありません。 – lsc
@lasithc:これは "モジュール定義ファイル"とは別の意味です:) – porges