小编lev*_*kin的帖子

程序集中的类型“<Module>”...包含的方法多于当前实现允许的方法

我正在尝试使用 /clr 标志在 Visual-studio-2013 中编译一个相对较大的遗留 C++ 项目。项目生成一个dll。

我收到以下运行时异常:

Type '<Module>' from assembly ... contains more methods than the current implementation allows

我必须补充一点,这种情况仅发生在调试配置中(发布 - 有效)。此外,该项目大量使用模板和宏,(我认为)这有助于生成大量的方法......

关于这个问题的文档很少甚至没有。我通过网络搜索得知的信息(不知道是否准确)是:

clr dll 中的方法数量限制为约 65K。所有本机类的所有方法都进入一些特殊的方法<Module>,因此它构成了全局限制。

一项建议是拆分项目,但这并不是一件很简单的事情,因为类间的依赖关系。我想这是可行的...

任何帮助,将不胜感激。

.net c++ clr

5
推荐指数
1
解决办法
763
查看次数

在 dotnet core 中捕获本机异常

在使用 pinvoke 并在 Linux 上运行的 dotnet 核心应用程序中,当 c++ 抛出异常时 - 例如 -std::runtime_error我们得到:

terminate called recursively
terminate called after throwing an instance of 'terminate called after throwing an instance of 'std::runtime_error*'
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

即使外部 C++ 方法的调用包装在托管代码中的 try catch 块中。

如何在 dotnet core 托管代码中捕获和处理这个问题?

c# c++ pinvoke interop .net-core

3
推荐指数
1
解决办法
1574
查看次数

标签 统计

c++ ×2

.net ×1

.net-core ×1

c# ×1

clr ×1

interop ×1

pinvoke ×1