问题描述
|
我正在开发托管库(使用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框架!