1
I’m developing a solution for an Argox printer, so I downloaded this example to see how it works:
http://www.argox.com/wp-content/uploads/largedriver/Command%20Library%20V410.zip
The example can be found in Command Library V410 PPLA Example Anycpu VC#_2005
When running the project and clicking the print button, I get this error: Unable to load the 'Winppla.dll' DLL: Could not find the specified module. (Exception of HRESULT: 0x8007007E)
When I try to implement this DLL in another project I get the same error
Code:
const uint IMAGE_BITMAP = 0;
const uint LR_LOADFROMFILE = 16;
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern IntPtr LoadImage(IntPtr hinst, string lpszName, uint uType,
int cxDesired, int cyDesired, uint fuLoad);
[DllImport("Gdi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int DeleteObject(IntPtr ho);
const string szSavePath = "C:\\Argox";
const string szSaveFile = "C:\\Argox\\PPLA_Example.Prn";
const string sznop1 = "nop_front\r\n";
const string sznop2 = "nop_middle\r\n";
[DllImport("Winppla.dll")]
private static extern int A_Bar2d_Maxi(int x, int y, int primary, int secondary,
int country, int service, char mode, int numeric, string data);
[DllImport("Winppla.dll")]
private static extern int A_Bar2d_Maxi_Ori(int x, int y, int ori, int primary,
int secondary, int country, int service, char mode, int numeric, string data);
[DllImport("Winppla.dll")]
private static extern int A_Bar2d_PDF417(int x, int y, int narrow, int width, char normal,
int security, int aspect, int row, int column, char mode, int numeric, string data);
[DllImport("Winppla.dll")]
private static extern int A_Bar2d_PDF417_Ori(int x, int y, int ori, int narrow, int width,
char normal, int security, int aspect, int row, int column, char mode, int numeric,
string data);
[DllImport("Winppla.dll")]
private static extern int A_Bar2d_DataMatrix(int x, int y, int rotation, int hor_mul,
int ver_mul, int ECC, int data_format, int num_rows, int num_col, char mode,
int numeric, string data);
[DllImport("Winppla.dll")]
private static extern void A_Clear_Memory();
[DllImport("Winppla.dll")]
private static extern void A_ClosePrn();
[DllImport("Winppla.dll")]
private static extern int A_CreatePrn(int selection, string filename);
[DllImport("Winppla.dll")]
private static extern int A_Del_Graphic(int mem_mode, string graphic);
[DllImport("Winppla.dll")]
private static extern int A_Draw_Box(char mode, int x, int y, int width, int height,
int top, int side);
[DllImport("Winppla.dll")]
private static extern int A_Draw_Line(char mode, int x, int y, int width, int height);
[DllImport("Winppla.dll")]
private static extern void A_Feed_Label();
[DllImport("Winppla.dll")]
private static extern IntPtr A_Get_DLL_Version(int nShowMessage);
[DllImport("Winppla.dll")]
private static extern int A_Get_DLL_VersionA(int nShowMessage);
[DllImport("Winppla.dll")]
private static extern int A_Get_Graphic(int x, int y, int mem_mode, char format,
string filename);
[DllImport("Winppla.dll")]
private static extern int A_Get_Graphic_ColorBMP(int x, int y, int mem_mode, char format,
string filename);
[DllImport("Winppla.dll")]
private static extern int A_Get_Graphic_ColorBMPEx(int x, int y, int nWidth, int nHeight,
int rotate, int mem_mode, char format, string id_name, string filename);
[DllImport("Winppla.dll")]
private static extern int A_Get_Graphic_ColorBMP_HBitmap(int x, int y, int nWidth, int nHeight,
int rotate, int mem_mode, char format, string id_name, IntPtr hbm);
[DllImport("Winppla.dll")]
private static extern int A_Initial_Setting(int Type, string Source);
[DllImport("Winppla.dll")]
private static extern int A_WriteData(int IsImmediate, byte[] pbuf, int length);
[DllImport("Winppla.dll")]
private static extern int A_ReadData(byte[] pbuf, int length, int dwTimeoutms);
[DllImport("Winppla.dll")]
private static extern int A_Load_Graphic(int x, int y, string graphic_name);
[DllImport("Winppla.dll")]
private static extern int A_Open_ChineseFont(string path);
[DllImport("Winppla.dll")]
private static extern int A_Print_Form(int width, int height, int copies, int amount,
string form_name);
[DllImport("Winppla.dll")]
private static extern int A_Print_Out(int width, int height, int copies, int amount);
[DllImport("Winppla.dll")]
private static extern int A_Prn_Barcode(int x, int y, int ori, char type, int narrow,
int width, int height, char mode, int numeric, string data);
[DllImport("Winppla.dll")]
private static extern int A_Prn_Text(int x, int y, int ori, int font, int type,
int hor_factor, int ver_factor, char mode, int numeric, string data);
[DllImport("Winppla.dll")]
private static extern int A_Prn_Text_Chinese(int x, int y, int fonttype, string id_name,
string data, int mem_mode);
[DllImport("Winppla.dll")]
private static extern int A_Prn_Text_TrueType(int x, int y, int FSize, string FType,
int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, string id_name,
string data, int mem_mode);
[DllImport("Winppla.dll")]
private static extern int A_Prn_Text_TrueType_W(int x, int y, int FHeight, int FWidth,
string FType, int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut,
string id_name, string data, int mem_mode);
[DllImport("Winppla.dll")]
private static extern int A_Set_Backfeed(int back);
[DllImport("Winppla.dll")]
private static extern int A_Set_BMPSave(int nSave, string pstrBMPFName);
[DllImport("Winppla.dll")]
private static extern int A_Set_Cutting(int cutting);
[DllImport("Winppla.dll")]
private static extern int A_Set_Darkness(int heat);
[DllImport("Winppla.dll")]
private static extern int A_Set_DebugDialog(int nEnable);
[DllImport("Winppla.dll")]
private static extern int A_Set_Feed(char rate);
[DllImport("Winppla.dll")]
private static extern int A_Set_Form(string formfile, string form_name, int mem_mode);
[DllImport("Winppla.dll")]
private static extern int A_Set_Margin(int position, int margin);
[DllImport("Winppla.dll")]
private static extern int A_Set_Prncomport(int baud, int parity, int data, int stop);
[DllImport("Winppla.dll")]
private static extern int A_Set_Prncomport_PC(int nBaudRate, int nByteSize, int nParity,
int nStopBits, int nDsr, int nCts, int nXonXoff);
[DllImport("Winppla.dll")]
private static extern int A_Set_Sensor_Mode(char type, int continuous);
[DllImport("Winppla.dll")]
private static extern int A_Set_Speed(char speed);
[DllImport("Winppla.dll")]
private static extern int A_Set_Syssetting(int transfer, int cut_peel, int length,
int zero, int pause);
[DllImport("Winppla.dll")]
private static extern int A_Set_Unit(char unit);
[DllImport("Winppla.dll")]
private static extern int A_Set_Gap(int gap);
[DllImport("Winppla.dll")]
private static extern int A_Set_Logic(int logic);
[DllImport("Winppla.dll")]
private static extern int A_Set_ProcessDlg(int nShow);
[DllImport("Winppla.dll")]
private static extern int A_Set_ErrorDlg(int nShow);
[DllImport("Winppla.dll")]
private static extern int A_Set_LabelVer(int centiInch);
[DllImport("Winppla.dll")]
private static extern int A_GetUSBBufferLen();
[DllImport("Winppla.dll")]
private static extern int A_EnumUSB(byte[] buf);
[DllImport("Winppla.dll")]
private static extern int A_CreateUSBPort(int nPort);
[DllImport("Winppla.dll")]
private static extern int A_CreatePort(int nPortType, int nPort, string filename);
[DllImport("Winppla.dll")]
private static extern int A_Clear_MemoryEx(int nMode);
[DllImport("Winppla.dll")]
private static extern void A_Set_Mirror();
[DllImport("Winppla.dll")]
private static extern int A_Bar2d_RSS(int x, int y, int ori, int ratio, int height,
char rtype, int mult, int seg, string data1, string data2);
[DllImport("Winppla.dll")]
private static extern int A_Bar2d_QR_M(int x, int y, int ori, char mult, int value,
int model, char error, int mask, char dinput, char mode, int numeric, string data);
[DllImport("Winppla.dll")]
private static extern int A_Bar2d_QR_A(int x, int y, int ori, char mult, int value,
char mode, int numeric, string data);
[DllImport("Winppla.dll")]
private static extern int A_GetNetPrinterBufferLen();
[DllImport("Winppla.dll")]
private static extern int A_EnumNetPrinter(byte[] buf);
[DllImport("Winppla.dll")]
private static extern int A_CreateNetPort(int nPort);
[DllImport("Winppla.dll")]
private static extern int A_Prn_Text_TrueType_Uni(int x, int y, int FSize, string FType,
int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, string id_name,
byte[] data, int format, int mem_mode);
[DllImport("Winppla.dll")]
private static extern int A_Prn_Text_TrueType_UniB(int x, int y, int FSize, string FType,
int Fspin, int FWeight, int FItalic, int FUnline, int FStrikeOut, string id_name,
byte[] data, int format, int mem_mode);
[DllImport("Winppla.dll")]
private static extern int A_GetUSBDeviceInfo(int nPort, byte[] pDeviceName,
out int pDeviceNameLen, byte[] pDevicePath, out int pDevicePathLen);
[DllImport("Winppla.dll")]
private static extern int A_Set_EncryptionKey(string encryptionKey);
[DllImport("Winppla.dll")]
private static extern int A_Check_EncryptionKey(string decodeKey, string encryptionKey,
int dwTimeoutms);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Test code start
// open port.
int nLen, ret, sw;
byte[] pbuf = new byte[128];
string strmsg;
IntPtr ver;
System.Text.Encoding encAscII = System.Text.Encoding.ASCII;
System.Text.Encoding encUnicode = System.Text.Encoding.Unicode;
try
{
// dll version.
ver = A_Get_DLL_Version(0);
// search port.
nLen = A_GetUSBBufferLen() + 1;
strmsg = "DLL ";
strmsg += Marshal.PtrToStringAnsi(ver);
strmsg += "\r\n";
if (nLen > 1)
{
byte[] buf1, buf2;
int len1 = 128, len2 = 128;
buf1 = new byte[len1];
buf2 = new byte[len2];
A_EnumUSB(pbuf);
A_GetUSBDeviceInfo(1, buf1, out len1, buf2, out len2);
sw = 1;
if (1 == sw)
{
ret = A_CreatePrn(12, encAscII.GetString(buf2, 0, len2));// open usb.
}
else
{
ret = A_CreateUSBPort(1);// must call A_GetUSBBufferLen() function fisrt.
}
if (0 != ret)
{
strmsg += "Open USB fail!";
}
else
{
strmsg += "Open USB:\r\nDevice name: ";
strmsg += encAscII.GetString(buf1, 0, len1);
strmsg += "\r\nDevice path: ";
strmsg += encAscII.GetString(buf2, 0, len2);
//sw = 2;
if (2 == sw)
{
//get printer status.
pbuf[0] = 0x01;
pbuf[1] = 0x46;
pbuf[2] = 0x0D;
pbuf[3] = 0x0A;
A_WriteData(1, pbuf, 4);//<SOH>F
ret = A_ReadData(pbuf, 2, 1000);
}
}
}
else
{
System.IO.Directory.CreateDirectory(szSavePath);
ret = A_CreatePrn(0, szSaveFile);// open file.
strmsg += "Open ";
strmsg += szSaveFile;
if (0 != ret)
{
strmsg += " file fail!";
}
else
{
strmsg += " file succeed!";
}
}
MessageBox.Show(strmsg);
if (0 != ret)
return;
// sample setting.
A_Set_DebugDialog(1);
A_Set_Unit('n');
A_Set_Syssetting(1, 0, 0, 0, 0);
A_Set_Darkness(8);
A_Del_Graphic(1, "*");// delete all picture.
A_Clear_Memory();// clear memory.
A_WriteData(0, encAscII.GetBytes(sznop2), sznop2.Length);
A_WriteData(1, encAscII.GetBytes(sznop1), sznop1.Length);
//draw box.
A_Draw_Box('A', 10, 10, 380, 280, 4, 4);
A_Draw_Line('A', 200, 10, 4, 280);
//print text, true type text.
A_Prn_Text(20, 30, 1, 2, 0, 1, 1, 'N', 2, "PPLA Lib Example");
A_Prn_Text_TrueType(20, 60, 30, "Arial", 1, 400, 0, 0, 0, "AA", "TrueType Font", 1);//save in ram.
A_Prn_Text_TrueType_W(20, 90, 20, 20, "Times New Roman", 1, 400, 0, 0, 0, "AB", "TT_W: 多字元測試", 1);
A_Prn_Text_TrueType_Uni(20, 120, 30, "Times New Roman", 1, 400, 0, 0, 0, "AC", Encoding.Unicode.GetBytes("TT_Uni: 多字元測試"), 1, 1);//UTF-16
encUnicode.GetBytes("\xFEFF", 0, 1, pbuf, 0);//UTF-16.//pbuf[0]=0xFF,pbuf[1]=0xFE;
encUnicode.GetBytes("TT_UniB: 多字元測試", 0, 14, pbuf, 2);//copy mutil byte.
encUnicode.GetBytes("\x0000", 0, 1, pbuf, 30);//null.//pbuf[30]=0x00,pbuf[31]=0x00;
A_Prn_Text_TrueType_UniB(20, 150, 30, "Times New Roman", 1, 400, 0, 0, 0, "AD", pbuf, 0, 1);//Byte Order Mark.
//barcode.
A_Prn_Barcode(220, 60, 1, 'A', 0, 0, 20, 'B', 1, "1234");
A_Bar2d_QR_A(220, 100, 1, '3', 10, 'N', 0, "QR CODE");
//picture.
A_Get_Graphic_ColorBMP(220, 150, 1, 'B', "bb.bmp");// Color bmp file to ram.
A_Get_Graphic_ColorBMPEx(220, 170, 200, 150, 2, 1, 'B', "bb1", "bb.bmp");//180 angle.
IntPtr himage = LoadImage(IntPtr.Zero, "bb.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
A_Get_Graphic_ColorBMP_HBitmap(300, 150, 250, 80, 1, 1, 'B', "bb2", himage);//90 angle.
if (IntPtr.Zero != himage)
DeleteObject(himage);
// output.
A_Print_Out(1, 1, 2, 1);// copy 2.
// close port.
A_ClosePrn();
}
catch (Exception ex)
{
}
}
failed to install the driver and or add the reference of that library to the project...
– Leandro Angelo
@Leandroangelo the driver is installed, when I try to add the DLL reference to the project I get this error: Could not add a reference to 'C:/Users/Dyego/Downloads/Command Library V410/Library/64-bit/Winppla.dll'. Make sure the file is accessible, which is a valid Assembly or COM component.
– Diego Berleis
It is missing to install some component, this message appears to you because who created these example project already had it installed and or already had this dll registered in Gac
– Leandro Angelo
Test and copy this dll to the same folder as your project
– Leandro Angelo
@Leandroangelo copied but I still get the same error: Can’t load the DLL 'Winppla.dll': Could not find the specified module.
– Diego Berleis
Adding its reference to the same folder as the executable?
– Leandro Angelo
Or... play it on the system... %windir% system32 (if it is 32bits) or %windir% Syswow64 (if it is 64 bits)... but I still think you missed installing something on the machine where you are running and or developing the solution.
– Leandro Angelo