C#调用DLL程式会直接退出!!

宅自在 2013-04-28 10:29:17
我在托管和非托管两种模式下都是这样,只要一调用到DLL就直接退出程式,

但是在C++下面就可以调用到!

C++代码如下:

LPCTSTR Collect_test(LPCTSTR Stage, LPCTSTR Barcode_NO, LPCTSTR Barcode_Result, LPCTSTR MachineNO, LPCTSTR Line, LPCTSTR OPNO, LPCTSTR DefectCode_Result, LPCTSTR Barcode_Test)

我想调用这个Collect_test函数体给里面的函数赋值!改成C#怎么写!谁能指点一下,在线等,谢谢各位前辈了!!!!!!!!
...全文
632 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbbliyong 2013-04-28
  • 打赏
  • 举报
回复
我今天刚碰到这个问题,就是传入的参数不对,就直接退出,把参数改正确就行了,我今天刚解决同类的问题
宅自在 2013-04-28
  • 打赏
  • 举报
回复
谢谢9楼的讲解!
失落的神庙 2013-04-28
  • 打赏
  • 举报
回复
我补充点吧


vs 添加此dll引用时,vs卡死,不会报非.net模块

DllImport 同上卡死

不会报找不到指定方法或者神马的

我感觉是一种防御措施吧

我感觉不能直接用




以上是我查看该dll中声明的接口


我只能说 楼主 如果你确定是收费的

那还是放弃吧。


如果是免费的 官网网上人家会有c++的sdk
足球中国 2013-04-28
  • 打赏
  • 举报
回复
引用 5 楼 a139533848 的回复:
[quote=引用 2 楼 zanfeng 的回复:] 如果非托管代码里有 exit(0)。进程就会立刻退出。先判断你传的值是否合法。
问题是现在连错误都看不见,程式直接退出![/quote] exit(0)就是不报异常的进程退出。
egojit8 2013-04-28
  • 打赏
  • 举报
回复
你直接拷贝到编译的bin目录下不是更好吗??如果程序从这个目录移到另一个目录你这种绝对地址写法不是会出问题么
宅自在 2013-04-28
  • 打赏
  • 举报
回复
引用 4 楼 egojit 的回复:
补充,记得将你的C++DLL放到编译目录里面,否则程序找不到
你好~我是这样写的!应该可以找到的把? [DllImport(@"D:\AUTOMATION\FunTestDll.dll", EntryPoint = "Collect_test")] static extern string Collect_test(string Stage, string Barcode_NO, string Barcode_Result, string Machine_NO, string Line, string OPNO, string DefectCode_Result, string Baroode_Test);
宅自在 2013-04-28
  • 打赏
  • 举报
回复
引用 2 楼 zanfeng 的回复:
如果非托管代码里有 exit(0)。进程就会立刻退出。先判断你传的值是否合法。
问题是现在连错误都看不见,程式直接退出!
egojit8 2013-04-28
  • 打赏
  • 举报
回复
补充,记得将你的C++DLL放到编译目录里面,否则程序找不到
egojit8 2013-04-28
  • 打赏
  • 举报
回复
用[DllImport(“MyDLL.dll")]这种方式去暴露下方法,C++方法参类型数要和C#类型对应好,C++LPCTSTR类型你用SringBuilder去对应,例如 [DllImport(“MyDLL.dll")] public static extern StringBuilder Collect_test(StringBuilder Stage, StringBuilder Barcode_NO, StringBuilder Barcode_Result, StringBuilder MachineNO, StringBuilder Line, StringBuilder OPNO, StringBuilder DefectCode_Result, StringBuilder Barcode_Test);
足球中国 2013-04-28
  • 打赏
  • 举报
回复
如果非托管代码里有 exit(0)。进程就会立刻退出。先判断你传的值是否合法。
shawn_yang 2013-04-28
  • 打赏
  • 举报
回复
单步一下,看看异常的信息
宅自在 2013-04-28
  • 打赏
  • 举报
回复
引用 12 楼 keith_cheung 的回复:
try 一下,看能否看到错误不?
try之后没进入catch直接退出程式
宅自在 2013-04-28
  • 打赏
  • 举报
回复
引用 11 楼 hbbliyong 的回复:
我今天刚碰到这个问题,就是传入的参数不对,就直接退出,把参数改正确就行了,我今天刚解决同类的问题
参数应该没问题!
keith_cheung 2013-04-28
  • 打赏
  • 举报
回复
try 一下,看能否看到错误不?

110,534

社区成员

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

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

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