无法导入C++;模块 我试图用C++模块来重建我的C++项目,以减少依赖和编译时间。我尝试导入了一些模块,但Visual Studio将导入语句标记为未定义:“找不到…”的模块文件。。尽管它将其标记为错误,但我仍然能够编译和运行导入的函数(尽管如果函数需要单独的#include,则不允许我编译该函数,因为该函数只在模块中找到,而在导入到的.cpp文件中找不到,这给了我一个链接器错误)。我密切关注微软的文档,能够在早期的项目中使用模块,并且从未遇到过这些问题,我确保在这个项目中重新建立相同的配置,但这种情况仍然发生

无法导入C++;模块 我试图用C++模块来重建我的C++项目,以减少依赖和编译时间。我尝试导入了一些模块,但Visual Studio将导入语句标记为未定义:“找不到…”的模块文件。。尽管它将其标记为错误,但我仍然能够编译和运行导入的函数(尽管如果函数需要单独的#include,则不允许我编译该函数,因为该函数只在模块中找到,而在导入到的.cpp文件中找不到,这给了我一个链接器错误)。我密切关注微软的文档,能够在早期的项目中使用模块,并且从未遇到过这些问题,我确保在这个项目中重新建立相同的配置,但这种情况仍然发生,c++,import,module,c++20,C++,Import,Module,C++20,我不确定我还能提供什么其他信息,但请询问是否有必要。任何帮助都将不胜感激 配置: 有效 import Object; #include <iostream> int main() { calc(1, 5); } import Object; #include <iostream> int main() { calc(1, 5); } 不起作用 导入对象; #包括 int main(){ 钙(1,5); } 导出模块对象; #包括 导出整数计

我不确定我还能提供什么其他信息,但请询问是否有必要。任何帮助都将不胜感激

配置:

有效

import Object;

#include <iostream>

int main() {
    calc(1, 5);
}
import Object;

#include <iostream>

int main() {
    calc(1, 5);
}
不起作用

导入对象;
#包括
int main(){
钙(1,5);
}
导出模块对象;
#包括
导出整数计算(整数a、整数b){
返回a+b;
}
如您所见,存在多个链接错误:

无论如何,VS都会将其标记为错误

编辑
通过将
#include
放在模块导出语句上方,代码将编译,但VS仍将其标记为错误。尽管导入诸如
之类的标题或导出类不起作用。所以我可以编译,但只能编译某些东西,而VS总是将其标记为错误

您不能在模块中包含这样的内容。在模块中包含头文件将使其所有内容成为模块的一部分。由于未定义从include声明的标准库函数的实现,因此会导致链接错误

标题有两种选择

第一种是使用全局模块片段:

module;
#include <iostream>
export module Object;

// ...
模块;
#包括
导出模块对象;
// ...
第二种选择是使用标题单位:

export module Object;

import <iostream>
导出模块对象;
进口

您应该提供一个。在这种情况下,您使用的文件和生成设置。我确保启用实验模块特性,并选择最新的C++标准。问题是,我在今天早些时候的一个项目中使用了完全相同的构建设置来测试模块,它起了作用,但我似乎无法复制它如果你不能复制这个问题,这意味着我们也不能真正复制,如果你不显示你正在使用的设置,肯定不能。好的,这是语言配置page@ItsMe我编辑了问题以包含代码。你不能在谷歌上搜索一幅图片,而在有文字的情况下阅读图片,这一点都不好玩。如果你也可以把链接错误的编译器输出,而不是最后的图像,那将是非常棒的。谢谢!我想知道“VisualStudio构建系统在您可以拥有的名称和结构方面受到限制”具体指的是什么。在什么情况下我可以使用模块?另一方面,我尝试导入而不是像你建议的那样包含标题,但我无法做到so@ItsMe嗯,在阅读文档时,他们似乎删除了构建系统中的限制,因此理论上,只要在项目中定义模块,就应该能够导入任何模块。不过,我不知道外部依赖关系。@ItsMe和阅读文档时,
import
应该可以正常工作,所以我不确定这里出了什么问题。我还没有尝试过模块。在早期的项目中它工作得很好。。。不过现在肯定不行。谢谢您,当我尝试导入时,例如,
std.core
,它会给我以下错误:
C1011:无法定位。。。安装VS安装程序中C++模块特性的库部分吗?< /代码>。在网上,似乎其他人也遇到了这个问题
module;
#include <iostream>
export module Object;

// ...
export module Object;

import <iostream>