淘- 2015-10-26 04:32 采纳率: 100%
浏览 1976
已采纳

c#调用C++的DLL时调用失败

本人C#小白。老大要求用C#调用C++的DLL.
C++的我写出来了,可以调用成功.
#include
#include
void main(){
HMODULE hModule = ::LoadLibrary(_T("C:\CT_InfoTerm.dll"));
typedef LONG (WINAPI pDLLProc)(int,char,int,int,int,char*,int);
pDLLProc dllfunc;
int iPort = 0;
char cExtendPort[1] = {'9'};
int iBaudRate = 9600;
int iVoiceType = 0;
int iTimeOut = 30;
char cPin[256];
memset(cPin, NULL, sizeof(cPin));
dllfunc = (pDLLProc)
::GetProcAddress((HMODULE)hModule, "CT_ReadPin");
int iReturn;
if (dllfunc != NULL){
iReturn = dllfunc(iPort, cExtendPort, iBaudRate, iVoiceType, iTimeOut, cPin, sizeof(cPin));
}
}

现在改为C#的
[DllImport("CT_InfoTerm.dll", EntryPoint = "CT_ClosePinPad" ,CallingConvention=CallingConvention.Cdecl)]
public unsafe static extern int CT_ReadPin(int iPortNo, char extendPort, int iBaudRate, int iVoiceType, int iTimeOut, StringBuilder Pin, int iPinSize);

        public unsafe void CT_ReadPin(WebCommand command) 
    {
        int nRet = -3;//打开串口失败(默认)
        if (_canRead)
        {
            int iPortNo = 0;
            char extendPort = '9';
            int iBaudRate = 9600;
            int iVoiceType = Convert.ToInt16(command.Parameter);
            int iTimeOut =30;
           //var Pin=new byte[100];
            StringBuilder Pin = new StringBuilder(1024);
           // string Pin = new string(Convert.ToChar(" "), 256);
           // char Pin = new char();
            int iPinSize =256;
            nRet = Centerm.CT_ReadPin(iPortNo,extendPort,iBaudRate,iVoiceType,iTimeOut,Pin,iPinSize);
            checkresult(command, nRet);
        }
     }
            pin是返回值
            注释的地方是我尝试的方法,并不报任何错误,但是C#的调用不成功,可能是pin这个参数有问题.
            各位大神能不能提供一些思路,供我参考一下,多谢
  • 写回答

1条回答

  • Haunt_ 2015-10-28 09:06
    关注

    pin是StringBuilder,要转化成String类型啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决