老问题了,有点着急了,大家帮忙啊!!!!谢谢谢谢谢谢啦!!!!!!!!!!

liuminxin 2004-04-30 09:45:41
1.关于调用.dll的问题,用vc++6.0做的.dll,在惠普的机器上用vc++6.0写的程序可以调用该.dll文件,但是在c#里调用就会报错“未将对象引用设置到对象的实例”,用ildasm打开该.dll文件会报错“该文件没有有效的CLR头,无法反汇编”,在联想的机器上就都可以调用,用ildasm打开该.dll文件也会报错“该文件没有有效的CLR头,无法反汇编”。
2.在联想机器上调用时,没有办法单独结束调用该.dll文件的线程,程序退出时加上“thread.IsBackground = true;”,程序可以正常退出,否则就是没有了界面但是在任务管理器中还是可以看到。

大家帮忙啊,给我讲讲为什么会是这样,怎么解决!!!!!!
...全文
566 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
weicizhou 2004-04-30
  • 打赏
  • 举报
回复
用一个工具 可以把com组建 升级成为.net基于msil的控件 升级一下就好了 不过具体名字我记不住了 你可能还要查一下 是framework自带的
liuminxin 2004-04-30
  • 打赏
  • 举报
回复
真是太感谢大家了,
"thread.Abort();"直接退出不行,它不理我;
.dll文件是别人做的,说它有问题吧,可是在联想的机器上就运行了,在惠普的机器上就不行,我就特别奇怪了.
直接kill线程是怎么会事,(不要笑我笨),我kill的时候,整个程序都退出了
ejiue 2004-04-30
  • 打赏
  • 举报
回复
自己没有做过就不要乱说一气。误人误己。

我只知道使用[DllImport("user32.dll")]来导入user32.dll(非托管dll)里的API是可以的。
Afrit 2004-04-30
  • 打赏
  • 举报
回复
1.同意 dqmayg(小马)
同意greatsft(C的使者) 的 “另外:ildasm.exe只能反编译c#,因为,他只能反编译拥有clr的语言(项目)”
2。实在不行,可以kill线程试试!
greatsft 2004-04-30
  • 打赏
  • 举报
回复
问题1:
如果想在c#中调用别的dll,可以在项目->添加引用中添加想要的dll即可.
另外:ildasm.exe只能反编译c#,因为,他只能反编译拥有clr的语言(项目)

问题2:
如果想要退出线程的话直接thread.Abort();即可

wish u good luck
Greatsft
tjq_tang 2004-04-30
  • 打赏
  • 举报
回复
没有遇到过。关注
rroo 2004-04-30
  • 打赏
  • 举报
回复
第一個問題;你的函數聲明有問題,
第二個問題;thread.IsBackground = true;這行代碼是將線程的執行方式設為背景執行,與線程退出沒有關係
你可以把你的代碼貼出來給我看看
riffleliu 2004-04-30
  • 打赏
  • 举报
回复
up
dqmayg 2004-04-30
  • 打赏
  • 举报
回复
刚好看过有关资料,默认情况下,c++编译器生成非托管模块,
建议你重新编译此dll文件,编译开关好象是/clr
dqmayg 2004-04-30
  • 打赏
  • 举报
回复
回复ejiue(鳕泶):
对,你还可以调用"kernal32.dll" (p/invoke机制)
weicizhou(周慰慈):
你是说tlbimp.exe吗?

110,545

社区成员

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

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

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