如何解决用本机C ++编写C#托管代码
| 我正在开发托管库(使用Microsoft Web Services),并且 将其包含到c ++项目中。该项目不使用“ 0”选项, 因此,当我包含库的头文件VS2005时,会显示错误 说我必须使用/clr
选项。这样做我不兼容
使用/EHs
命令行选项(错误D8016),但从EHs
更改为
没有异常处理无法解决问题并不断向我显示同样的错误。
任何建议都欢迎。
先感谢您。
解决方法
如果您拥有非托管的C ++代码并想使用托管的代码,则可以选择以下几种方法:
通过使用
/clr
开关将非托管代码更改为C ++ / CLI。
编写一个C ++ / CLI包装器库。它可以DLL导出您在非托管代码中调用的非托管函数。
跳过包装器库,并通过此库直接DLL导出非托管函数。
,您不能通过非托管C ++应用程序使用托管库。由于添加了/ clr选项,因此您的c ++应用程序也将被管理(仅用于记录:))
这可能对您有帮助:http://msdn.microsoft.com/zh-cn/library/ffkc918h.aspx-/ clr选项的限制。
,可以编写托管的c ++适配器,该适配器将调用C#库,并像通常调用普通的c ++库一样从非托管的c ++程序中调用此适配器。如果出于某种原因要使其不受管理,则将使用/ clr和不带/ clr的主c ++程序编译适配器库。
,您可以嵌入单声道环境并启动AppDomain。 mono \的运行时API将允许您实例化类并在其上调用成员。这会很笨拙,但是会起作用
http://www.mono-project.com/Embedding_Mono
请注意,Mono是完全兼容.Net 4.0的CLR,它可以与Windows上的Microsoft核心库一起使用。
在Windows和Unix上,它可以与Mono corlib / class库一起使用。有些区域未包含在Mono中,但它们似乎变得稀疏。您可以使用MoMa工具来确定您的应用程序是否使用不兼容/不完整的API。
或者,即使您仍然在Windows上,也可以只使用Microsoft .NET框架!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。