|
VC小白,请大神赐教。
dll有个函数:int[] OpenNetPort(int addr,int Port,String IPaddr);
如果该函数调用成功,返回一个数组,第一个字节表示函数执行结果,为0表示成功,返回非零值请查看其他返回值定义,返回的错误代码请查看错误代码定义,第2个字节表示读写器地址,第3个字节表示返回与读写器连接端口对应的句柄,应用程序通过该句柄可以操作连接在相应端口的读写器。如果打开不成功,返回的句柄值为-1。
我通过动态加载dll的方式调用这个函数,我该如何使用呢?如何分别获取数组内的各个代表不同意义的值?
目前使用的代码是这样:
typedef int* (*OpenNetPort_FUNC)(int addr, int Port, CString IPaddr);
HMODULE hModule = LoadLibrary(_T("C:\\Users\\晨晨的跟班\\Desktop\\cpp_test\\CallDll\\UHFReader18.dll"));
if (hModule) {
::MessageBox(this->m_hWnd, _T("加载成功"), _T("提示"), MB_OK);
OpenNetPort_FUNC OpenNetPort_fp = (OpenNetPort_FUNC)::GetProcAddress(hModule, "OpenNetPort");
int FrmHandle = 0;
if (OpenNetPort_fp) {
::MessageBox(this->m_hWnd, _T("函数加载成功"), _T("提示"), MB_OK);
int* OpenRetp = new int[3];
ZeroMemory(OpenRetp, 3);
OpenRetp = OpenNetPort_fp(0xFF, 6000, _T("192.168.1.190"));//函数返回值是55
delete[] OpenRetp;//这里会报错
}
FreeLibrary(hModule);
} |
上一篇: 函数的默认参数的问题下一篇: vc++窗口篇之windows发送消息
|