最近遇到一个案子使用C++调用易编写的DLL,其中遇到调用问题,特发此贴记录。
C++代码: // ConsoleApplication4.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include "pch.h" #include<stdio.h> #include<windows.h> #include<stdlib.h> #include <iostream> using namespace std; HINSTANCE hMod = LoadLibrary("d:\\atten_db.dll");//dll路径 void write_db() { typedef char* (__stdcall *FUNA)(char*, char*); FUNA write_db = (FUNA)GetProcAddress(hMod, TEXT("write_db"));//直接使用原工程函数名 char parameters1[] = "AR001,T10,2,V1.8 - Nov 20 2018 -14:20:04,02:00:00:00:15:b1,v181,01070001,20190105t140632,62,PASS,ChecknnModelsMessage,OK,OK,PASS,DEVICE_ID,0200000015b1,0200000015b1,PASS,MFG_ID,01070001,01070001,PASS,SECRET,f1de923b64750a8c,f1de923b64750a8c,PASS,Firmware,v181,v181,PASS,Bootloader,v4,v4,PASS,Soft-deviceFWID,0x9d,0x9d,PASS,+3V_PM,3.01,[2.90;3.20],PASS,+3V_BLE,2.99,[2.90;3.20],PASS,+3V_SENSOR,3.00,[2.90;3.20],PASS,+3V_LASER,3.08,[2.90;3.20],PASS,+3V_FAN,3.05,[2.90;3.20],PASS,+1V8_SENSOR,1.81,[1.70;1.98],PASS,EnTRHsensor,OK,OK,PASS,temperature,22.300,[20.43;24.43],PASS,humidity,77.800,[70.40;90.40],PASS,ResetButton,OK,OK,PASS"; char parameters2[] = "c:\test"; char* result = write_db(parameters1,parameters2); printf("%s", result); } void read_db() { typedef char* (__stdcall *FUNA1)(char*, char*); FUNA1 read_db = (FUNA1)GetProcAddress(hMod, TEXT("read_db")); char parameters1[] = "02:00:00:00:15:46"; char parameters2[] = "t20"; char* result = read_db(parameters1,parameters2); printf("%s", result); } int main() { //write_db(); read_db(); FreeLibrary(hMod); }
|