- 此问题在此处已有答案**:
Will c++1z modules replace the need for dllimport dllexport on windows(3个答案)
昨天关门了。
我有一个名为Almond
的解决方案,其中包含两个项目:
- 杏仁
- 沙盒
Almond是一个使用C20模块创建的共享库。Sandbox应该是一个在运行时链接到Almond的可执行文件(也是为C20配置的)。我在Sandbox中添加了almond作为引用。看起来我应该能够从库中导入模块,甚至可以获得智能感知。我是否也必须做__declspec(dllexport)
和__declspec(dllimport)
之类的事情?如果是,怎么会?我找不到任何能解释这个的文件。
杏仁色:src/Lib.ixx
export module Lib;
export int Three() {
return 3;
}
沙盒:src/Main.cpp
:
import Lib;
import <iostream>;
int main() {
std::cout << Three() << std::endl;
}
Almond构建得很好,但构建沙箱时出现以下错误:
Severity Code Description Project File Line Suppression State
Error C2065 'endl': undeclared identifier Sandbox C:\source\Almond\Sandbox\src\Main.cpp 6
Error C2230 could not find module 'Lib' Sandbox C:\source\Almond\Sandbox\src\Main.cpp 1
Error C7612 could not find header unit for 'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\include\iostream' Sandbox C:\source\Almond\Sandbox\src\Main.cpp 3
Error C2039 'cout': is not a member of 'std' Sandbox C:\source\Almond\Sandbox\src\Main.cpp 6
Error C2065 'cout': undeclared identifier Sandbox C:\source\Almond\Sandbox\src\Main.cpp 6
Error C3861 'Three': identifier not found Sandbox C:\source\Almond\Sandbox\src\Main.cpp 6
Error C2039 'endl': is not a member of 'std' Sandbox C:\source\Almond\Sandbox\src\Main.cpp 6
1条答案
按热度按时间9jyewag01#
我不知道你想做什么,但尝试使用名称空间,而不是模块,它更简单,在我看来。
名称空间本质上是
std
这样的模块,它们包含x::y
可以访问的成员(类、变量或函数):杏仁h:
沙盒h:
我们使用在
Almond.h
文件中声明的名称空间Almond,然后就可以使用它的所有成员了!