小弟是c++菜鸟,基本c++语法都看不太懂,现在公司要我根据这个c++代码使用的dll,用c#翻译出来并使用,我确实吃力啊!!求助,非常感谢!
c++代码#ifdef BRGETSTATUS_EXPORTS
#define BRGETSTATUS_API __declspec(dllexport)
#else
#define BRGETSTATUS_API __declspec(dllimport)
#endif
BRGETSTATUS_API INT BrGetStatus(INT* pVal, char* lpbuff);BRGETSTATUS_API INT BrGetToner(INT* pCVal, INT* pMVal, INT* pYVal, INT* pKVal);BRGETSTATUS_API INT BrGetDrum(INT* pCVal, INT* pMVal, INT* pYVal, INT* pKVal);BRGETSTATUS_API INT BrGetPageCount(INT* pPageCount);//这个函数调用BrGetStatus
void CTestDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
INT dwVal = -1; // -1 is unknown value;
char name[64] = {0};
BrGetStatus(&dwVal, name); if( m_last != dwVal )
{
time_t rawtime;
struct tm * timeinfo; time ( &rawtime );
timeinfo = localtime ( &rawtime ); CString str;
str.Format("%02d:%02d:%02d, ״̬[%d]: %s",  timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec, dwVal, name); m_listStatus.AddString(str);
m_last = dwVal;
}
CDialog::OnTimer(nIDEvent);
}这个c++有个dll库,用Dependency查看里面4个函数
?BrGetDrum@@YAHPAH000@Z,
?BrGetPageCount@@YAHPAH@Z,
?BrGetStatus@@YAHPAHPAD@Z,
?BrGetToner@@YAHPAH000@Z我想在用c#也调用BrGetStatus这个函数,请问我能怎样做!!求助,万分感谢!

解决方案 »

  1.   

    那几个api没有源码,无法翻译,估计是可以 DllImport的吧
    剩下的那对代码其实很简单,看似就是个timer,至于对时间的操作,c#中有TimeSpan,自己看帮助吧
      

  2.   

    我尝试用C#引入        private void button1_Click(object sender, EventArgs e)
            {
                byte[] chars = { 0 };
                int pVal = -1;
                PrinterListen.BrGetStatus(ref pVal,ref chars);
                MessageBox.Show(Encoding.Default.GetString(chars));  
            }        [DllImport("C:/PrinterDll/BrHL3040CNGetStatus.dll", EntryPoint = "?BrGetStatus@@YAHPAHPAD@Z")]
            public static extern int BrGetStatus(ref int pVal,ref byte[] lpbuff);
    貌似不能获取,并卡死在哪里!!求助!
      

  3.   

    那怎样用c#引用跟他那样的api.
    这里我在网上查资料一直找不到!
      

  4.   

    DllImport写错了char* lpbuff
    对应的C#类型是
    byte[]
    不是
    ref byte[]
      

  5.   

    http://topic.csdn.net/u/20090225/15/a6bc50ad-9721-4749-b189-dc4a4bc045a1.html
    确认是否类型映射问题