小弟是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这个函数,请问我能怎样做!!求助,万分感谢!
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这个函数,请问我能怎样做!!求助,万分感谢!
解决方案 »
- 关于datagridview存入txt
- DataGridView的CauseValidation属性设为了False, 怎样保存更改内容?
- 急急急急急急急急急急急急急急急急急急急急急急急急
- C# 如何产生五个随机的数字??
- 在C#如何调用这个SwitchToThisWindow函数,如何声明?
- 如何为控件添加滚动条
- 请问各位高手,如何可以用openFileDialog实现打开txt文档呀,可以显示到文档中的内容
- 高分请教:大包过程中的对话框如何设置为密码框
- 关于DataSet中数据是不有变化,网上说用DataSet.GetChanges(),为什么我用的返回的不对呀....
- string 和StringBuilder~~~
- 程序怎么实现客户生日自动向客户手机发送短信的功能
- 求高手赐教C#调用matlab工具箱里面的ap神经网络
剩下的那对代码其实很简单,看似就是个timer,至于对时间的操作,c#中有TimeSpan,自己看帮助吧
{
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);
貌似不能获取,并卡死在哪里!!求助!
这里我在网上查资料一直找不到!
对应的C#类型是
byte[]
不是
ref byte[]
确认是否类型映射问题