坏坏的留言



一剑发表于:2008-08-22

嗨,你好呀,我是一剑,很高兴认识你:)

坏坏 回复于:2008-08-22

你好

yangshuosky发表于:2008-06-30

Marshal.WriteInt32 是写int32数据类型,请问如果写uint32类型的数据应该怎样写呢?

yangshuosky发表于:2008-06-28

还有SI_Write的调用,我现在改成了byte[] DataSend = { 2, 125 }; IntPtr p = Marshal.AllocHGlobal(2); Marshal.Copy(DataSend, 0, p, 2);IntPtr intptr = Marshal.AllocHGlobal(2);Marshal.WriteInt32(intptr, 2);SI_Write(m_hUSBDevice,p,2, intptr);也按你说的改为cdecl调用了。还是说不匹配,问题出在哪呢?

yangshuosky发表于:2008-06-28

我调试看了一下数组的大小,申请的内存大小没问题的。难道真是编码文件dll有问题?那就惨了。我是从网上下载的,感觉不会有问题的啊。调试不是说0x03429b0a指令引用的0x0ead2000内存不能为write吗,有没有办法查看这个指令的内存看具体是什么问题啊?

坏坏 回复于:2008-07-01

你最好拿到dll的源码调试一下。

yangshuosky发表于:2008-06-28

非托管内存的申请有大小限制吗?我需要400000字节,是不是超出了?图像压缩前数据量这么大应该没错吧?

坏坏 回复于:2008-06-28

400000字节应该不大,你得看看说明文档需要多少

yangshuosky发表于:2008-06-28

我用CallingConvention也不行啊。请问您有其他联系方式吗?老是留言问问题不大能问的清楚。我做课题遇到很多问题实在找不到人请教,所以麻烦您了!

yangshuosky发表于:2008-06-28

请问(c#中)调用图像压缩的DLL(c++编写)时,需要设置原始图像缓冲区,是不是必须要申请非托管内存啊?intptr outvideodata = Marshal.AllocHGlobal(videonumber*2);Marshal.Copy(buff , 0, outvideodata, videonumber);En_SetCompressIn(outvideodata);//设置原始图像缓冲区En_StartEncoder();//开始压缩。调试总是出现**内存不能为written或者read.怎么回事呢?

坏坏 回复于:2008-06-28

是得申请非托管内存,出现问题应该是你申请的大小、或者dll的编写有问题。

lei5179发表于:2008-06-18

请问我下载了进销存管理系统,就是无法安装,能告诉我说什么地方出问题了吗 ?

坏坏 回复于:2008-06-18

俺天生愚笨猜不出来.

yangshuosky发表于:2008-06-18

调试时出现错误:对 PInvoke 函数“Client!Client.Form1::SI_Write”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

坏坏 回复于:2008-06-18

那就是CallingConvention 的问题了,修改调用方式为cdecl[DllImport(CallingConvention=CallingConvention.Cdecl)]

yangshuosky发表于:2008-06-14

原型为SI_Write (HANDLE Handle, LPVOID Buffer, DWORD NumBytesToWrite,DWORD *NumBytesWritten)public IntPtr m_hUSBDevice = (IntPtr)INVALID_HANDLE_VALUE;
我写为 SI_Write(IntPtr hPrinter,IntPtr intptr, UInt32 cdBuf, out UInt32 pcWritten);然后
IntPtr intptr = Marshal.AllocHGlobal(2);
            Marshal.Copy(DataSend, 0, intptr, 2);
            DataSend[0] = 2;
            DataSend[1] = 125;
UInt32 bb;
SI_Write(m_hUSBDevice, intptr, 2, out  bb)
还是不匹配。请问是哪还不对呢?

坏坏 回复于:2008-06-17

怎么不匹配? 出现什么错误?

 1 2 3 4 5