我正在尝试Visual Studio 2017版本15.4.4中的模块的实验性实现。我按照此处描述的说明https://blogs.msdn.microsoft.com/vcblog/2017/05/05/cpp-modules-in-visual-studio-2017/。我能够在控制台应用程序中快速运行。
import std.core;
int main()
{
std::cout << "Hello modules!" << std::endl;
return 0;
}
导入和使用可用的标准模块不是问题(据我所知,目前为止)。
但是,当我定义自己的模块时,没有任何作用。我添加了一个文件 system.ixx (项目类型C / C ++编译器),其中包含以下内容:
import std.core;
export import system.io;
export struct console
{
void write(std::string_view text) { std::cout << text; }
void write_line(std::string_view text) { std::cout << text << std::endl; }
};
我将import system.io
添加到 main.cpp
import std.core;
import system.io;
int main()
{
std::cout << "Hello modules!" << std::endl;
return 0;
}
我收到以下错误:
1>system.ixx
1>system.ixx(2): error C2230: could not find module 'system.io'
1>main.cpp
1>main.cpp(2): error C2230: could not find module 'system.io'
我还在编译器选项中添加了/module:reference system.io.idf
,但没有从 system.ixx 生成的 system.io.idf 文件。
我知道这是实验性的并且有很多问题,但我想知道我应该做些什么来使这个简单的事情发挥作用。
答案 0 :(得分:0)
在system.ixx
中,尝试将export import system.io
更改为export module system.io
。您还希望确保export module ...
声明出现在文件顶部。因此system.ixx
变为:
export module system.io;
import std.core;
export struct console
{
void write(std::string_view text) { std::cout << text; }
void write_line(std::string_view text) { std::cout << text << std::endl; }
};