首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >托管C++类不能从C#引用

托管C++类不能从C#引用
EN

Stack Overflow用户
提问于 2013-11-03 18:15:11
回答 2查看 1.4K关注 0票数 1

我目前遇到的问题真的很奇怪。我尝试使用来自C++项目的托管C#类,但编译器找不到类型。

看看这张截图:

引用托管C++项目(NGervill.Gervill.Native),根据对象浏览器,它包含所有必需的命名空间和类型。在我的源代码中,我添加了using并使用了这个类,但是仍然得到了一个编译错误。

现在最奇怪的部分是:可以引用托管C++项目中的其他类型。在另一个C#类中,我访问PortMixerProviderNative类的方法。这意味着目标平台和.net框架版本是正确的(.net 4.5 - x86构建)。

Visual是以某种方式缓存托管C++ DLL的旧版本,还是其他什么会导致这样的问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-03 19:40:43

我最终找到了这个问题的解决方案:出于某种原因,实现PortMixerNative类的cpp文件没有包含在项目中。在再次将PortMixerNative.cpp添加到项目之后,我终于可以看到该文件中存在语法错误。在修复错误和重新编译.Native项目之后,我可以成功地引用该类。

奇怪的是,即使没有实现的方法,.Native项目也能成功编译。如果有人也遇到这个问题,请检查您尝试使用的类的所有方法是否都有一个实现。

票数 0
EN

Stack Overflow用户

发布于 2013-11-03 18:37:36

PortMixerNative是一个本机C++类,而不是托管类。在某些情况下,本机类可以在程序集元数据中公开,这通常是因为它们是托管类包装器中的私有字段的类型,但是它们不能从C#程序中以任何方式使用。只有C++/CLI项目中的public ref class声明是可用的。

还不清楚您应该使用哪个包装类。不是PortMixerNative。检查供应商手册和/或代码示例,如果需要更多帮助,请与它们联系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19756257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档