[英]Unable to Import C++ Modules
我正在尝试使用模块在 C++ 20 中重建我的一个项目,以减少依赖关系和编译时间。 我尝试导入一些模块,并且我能够这样做,但 Visual Studio 将导入语句标记为未定义: "Could not find module file for..."
。 尽管将其标记为错误,但我仍然能够编译和运行导入的函数(尽管它不允许我编译 function,如果它需要仅在模块中找到的单独#include
而不是它的 .cpp 文件导入到,给我一个 linker 错误)。 我密切关注 Microsoft 的文档,并且能够在早期项目中使用模块,然后从未遇到任何这些问题,我确保在该项目中重新建立相同的配置,但这种情况发生了。
我不确定我可以提供哪些其他信息,但请询问是否有必要。 任何帮助,将不胜感激
作品
import Object;
#include <iostream>
int main() {
calc(1, 5);
}
export module Object;
export int calc(int a, int b) {
return a + b;
}
不工作
import Object;
#include <iostream>
int main() {
calc(1, 5);
}
export module Object;
#include <iostream>
export int calc(int a, int b) {
return a + b;
}
无论哪种方式,VS都将其标记为错误
编辑通过将#include
放在模块导出语句上方,代码编译,但VS 仍将其标记为错误。 尽管导入诸如<iostream>
之类的标头或导出类不起作用。 所以我可以编译,但只能编译某些东西,并且 VS 总是将其标记为错误
您不能在模块中包含这样的内容。 在一个模块中包含一个 header 文件将使其所有内容成为模块的一部分。 由于您没有为您从包含声明中声明的标准库 function 定义实现,因此会导致链接错误。
标题有两种选择。
首先是使用全局模块片段:
module;
#include <iostream>
export module Object;
// ...
第二种选择是使用 header 单元:
export module Object;
import <iostream>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.