C++ 调用 C# COM Interop 报错

arden1019 2012-02-01 04:47:05
用C# 写了一个COM, 注册后给C++调用。之前都没问题,做过一些修改后,调用某个接口时 报错 HRESULT 0x80131509。
问题是只在某些机器上报错,某些机器上正常 (我的机器上没事儿,所以没办法调试)。

那位熟悉COM的哥哥给个建议?TLB的问题?还是跟那些系统环境有关系?

...全文
117 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
arden1019 2012-02-08
  • 打赏
  • 举报
回复
原因是报错的情况,客户连接了不同的数据库。 这时 C# 端抛了个异常。而 C++ 这边没有对异常的处理。 谢谢哥几个了。
gomoku 2012-02-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 arden1019 的回复:]
...问题是只在某些机器上报错,某些机器上正常 (我的机器上没事儿,所以没办法调试)。
[/Quote]

看看某些机器上是否装了Framework 3.5 SP1。
如果开发机上装过SP1,开发时可能会用到一些3.5没有的函数,比如Wait(timeout)等。
arden1019 2012-02-01
  • 打赏
  • 举报
回复
to happy09li:
我的C++ 是vs2003的工程, c# 是VS2008的工程 Framework3.5
真是乱了套了。。。
熙风 2012-02-01
  • 打赏
  • 举报
回复
.net Framewor版本问题?
arden1019 2012-02-01
  • 打赏
  • 举报
回复
kong19:
接口类有[ComVisible(true)],貌似[ComVisible(true)]是默认的吧,并没有新接口,接口定义没有变,只是实现里面内容变了。

bdmh:
哥,改的地儿太多了。。。
我倒是可以将之前的dll替换一下试试。

kong19 2012-02-01
  • 打赏
  • 举报
回复
是不是新接口没有加 [ComVisible(true)]?
bdmh 2012-02-01
  • 打赏
  • 举报
回复
先把修改去掉,试试,不行就加日志记录执行过程吧

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧