解决:0x80070057 ValueClassMarshaler.ConvertToNative

用了整整 7 小时解决掉下面这个问题:

问题:

System.ArgumentException:参数错误(异常来自HRESULT:0x80070057(E_INVALIDARG))

System.StubHelpers.ValueClassMarshaler.ConvertToNative(IntPtr dst,IntPtr src,IntPtr pMT,CleanupWorkList& pCleanupWorkList)

xcsrvb7._CardFile.WriteCard(WFCAS_Card_t& card)

如下图所示:

ArgumentException:参数错误,HRESULT:0x80070057<wbr></p>ValueClassMarshaler.ConvertToNative


解决方法

项目属性-应用程序-程序集信息-使程序集COM可见(打勾)

ArgumentException:参数错误,HRESULT:0x80070057<wbr></p>ValueClassMarshaler.ConvertToNative


总结:

使程序集COM可见:没有勾选时就会出现如上错误

xcsrvb7.dll XCSRB6.DLL(VB6写的DLL)TLBIMP生成的。

wfIfSmc4boss.dll 直接调用xcsrvb7.dll

窗体应用程序wfIfSmc4boss.dll_demovb2010直接调用wfIfSmc4boss.dll,不会直接调用xcsrvb7.dll

所有直接使用xcsrvb7.dll的项目都必须作这样的设置(使程序集COM可见:打勾),间接使用的不必打勾,打勾也没问题,不过为防止其它DLL出现类似问题,建议就都打勾。

ArgumentException:参数错误,HRESULT:0x80070057<wbr></p>ValueClassMarshaler.ConvertToNative


环境:

VB.NET2010SP1 @Windows server2012r2


注:

在和另外使用xcsrvb7.dll好几年的项目SMS比较项目设置时才发现解决方法

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...