如何在Visual Studio中创建含C++20模块的DLL并实现调用?
C++20模块DLL在Visual Studio中的调用配置方案
DLL项目需补充的配置
- 模块接口必须显式导出:在模块文件开头声明
export module test_kit;,同时给需要对外暴露的函数、类加上export修饰符,示例代码:export module test_kit; export void print_hello() { printf("Hello from test_kit module!\n"); } - 指定模块接口文件(.ifc)输出路径:打开项目属性 → C/C++ → 输出文件,设置“模块文件(.ifc)”的输出目录(比如
$(SolutionDir)ModuleOutput\$(Configuration)\),确保调用项目能访问到该路径。 - 确认项目生成时会输出
.ifc文件:编译DLL项目后,检查指定的输出目录下是否存在test_kit.ifc,这是导入模块的核心文件。
命令行调用项目需补充的配置
- 添加模块搜索路径:打开项目属性 → C/C++ → 常规,在“附加模块依赖项”中填入DLL项目生成
.ifc文件的路径(即上面设置的$(SolutionDir)ModuleOutput\$(Configuration)\)。 - 保持编译配置一致:确保调用项目的语言标准为
/std:c++latest,且关闭预编译头,和DLL项目的配置对齐。 - 确保链接到DLL导入库:虽然添加项目引用后VS通常会自动处理,但如果链接报错,可手动在链接器 → 输入 → 附加依赖项中添加DLL项目生成的
.lib文件路径。 - 运行时部署DLL:在项目属性 → 生成事件 → 后期生成事件中添加复制命令,将DLL文件复制到调用项目的输出目录,示例:
copy "$(SolutionDir)x64\$(Configuration)\test_kit.dll" "$(OutDir)"
注意事项
- 严格保持Debug/Release配置一致:两个项目必须使用相同的配置,否则
.ifc和.lib文件版本不匹配会导致模块找不到。 - 模块名称完全匹配:
import test_kit;中的名称必须和DLL模块声明的export module test_kit;完全一致,区分大小写。
内容的提问来源于stack exchange,提问作者Rob N
相关产品推荐
相关产品推荐

