当前位置:编程学习 > C#/ASP.NET >>

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

我在托管和非托管两种模式下都是这样,只要一调用到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#怎么写!谁能指点一下,在线等,谢谢各位前辈了!!!!!!!! --------------------编程问答-------------------- 单步一下,看看异常的信息 --------------------编程问答-------------------- 如果非托管代码里有 exit(0)。进程就会立刻退出。先判断你传的值是否合法。 --------------------编程问答-------------------- 用[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); --------------------编程问答-------------------- 补充,记得将你的C++DLL放到编译目录里面,否则程序找不到 --------------------编程问答--------------------
引用 2 楼 zanfeng 的回复:
如果非托管代码里有 exit(0)。进程就会立刻退出。先判断你传的值是否合法。


问题是现在连错误都看不见,程式直接退出! --------------------编程问答--------------------
引用 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);
--------------------编程问答-------------------- 你直接拷贝到编译的bin目录下不是更好吗??如果程序从这个目录移到另一个目录你这种绝对地址写法不是会出问题么 --------------------编程问答--------------------
引用 5 楼 a139533848 的回复:
Quote: 引用 2 楼 zanfeng 的回复:

如果非托管代码里有 exit(0)。进程就会立刻退出。先判断你传的值是否合法。


问题是现在连错误都看不见,程式直接退出!

exit(0)就是不报异常的进程退出。 --------------------编程问答-------------------- 我补充点吧 


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

DllImport 同上卡死

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

我感觉是一种防御措施吧

我感觉不能直接用




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


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

那还是放弃吧。


如果是免费的  官网网上人家会有c++的sdk --------------------编程问答-------------------- 谢谢9楼的讲解! --------------------编程问答-------------------- 我今天刚碰到这个问题,就是传入的参数不对,就直接退出,把参数改正确就行了,我今天刚解决同类的问题 --------------------编程问答-------------------- try 一下,看能否看到错误不? --------------------编程问答--------------------
引用 11 楼 hbbliyong 的回复:
我今天刚碰到这个问题,就是传入的参数不对,就直接退出,把参数改正确就行了,我今天刚解决同类的问题


参数应该没问题! --------------------编程问答--------------------
引用 12 楼 keith_cheung 的回复:
try 一下,看能否看到错误不?


try之后没进入catch直接退出程式
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,