模块导入 (C++) --- 错误“模块文件映射无效”
Posted
技术标签:
【中文标题】模块导入 (C++) --- 错误“模块文件映射无效”【英文标题】:Module importing (C++) --- ERROR "module file mapping invalid" 【发布时间】:2022-01-13 17:34:54 【问题描述】:ImageLoader.cpp // 错误:'SafeReleaseM' 的 E3344 模块文件映射无效
import SafeReleaseM;
import <wincodec.h>;
import <d2d1.h>;
class ImageLoader;
SafeReleaseM.ixx
export module SafeReleaseM;
export template <class T> void SafeRelease(T** type)
if (*type)
(*type)->Release();
*type = NULL;
我已将标准设置为最新的 C++ 标准和 C 标准,将我的源文件夹添加到模块依赖目录,启用扫描模块。
在我看来,这是一个非常基本的模块测试,我做错了什么吗?我是 S.O 的新手,所以如果我应该添加其他设置信息,请告知。
编辑:我正在使用 Visual Studio 2022 社区 (msvc)
编辑#2:在一个单独的项目中,类似的方法可以导出模板函数。也许我的项目配置有问题。
【问题讨论】:
ImageLoader.cpp 正在构建什么模块?因为您不能从不是本身模块的源文件导入模块。另外,您使用的是什么编译器和构建工具? @NicolBolas 你是说“ImageLoader.cpp”本身必须是一个模块才能导入“SafeReleaseM.ixx”吗? “ImageLoader”是一个包含加载图像逻辑的文件。它导入“SafeReleaseM”以使用安全释放指针的 [SafeRelease] 模板函数。另外,我正在使用带有 VS 2022 的 msvc 其实没有;我误读了标准中的某些内容。 在进一步测试模块后,我发现我在尝试使用模板函数时得到了这个,但不是 int/char/normal void: 您应该在问题中添加有效和无效的特定代码。 【参考方案1】:创建一个新项目并将相同的代码粘贴到工作中。
不确定是什么导致了 Visual Studio 文件映射问题,但我所做的不同之处在于在一个新项目中,我通过解决方案资源管理器窗口创建了文件。 - 错误可能与依赖/配置相关。或由更新引起。
【讨论】:
以上是关于模块导入 (C++) --- 错误“模块文件映射无效”的主要内容,如果未能解决你的问题,请参考以下文章
__init__.py 是 python 的后裔,但不是来自 c++;导致“导入 matplotlib”错误
如何在 C++ 程序将使用的 Python 脚本中导入 cpython 模块?
numpy.core.multiarray 在通过 xcode 中开发的 C++ 应用程序调用 python 模块时导入失败