Problem with winppla.dll

Asked

Viewed 718 times

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...

  • @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.

  • 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

  • Test and copy this dll to the same folder as your project

  • @Leandroangelo copied but I still get the same error: Can’t load the DLL 'Winppla.dll': Could not find the specified module.

  • Adding its reference to the same folder as the executable?

  • 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.

Show 2 more comments

1 answer

0

I was having exactly the same problems as you, so I followed some tips I saw on various forums around:

  • I downloaded the printer files from the site: http://www.argox.com/product/os-214plus/
    • in the guide SOFTWARE downloaded PRINTER UTILITY V4.34, COMMAND LIBRARY V4.10 and ARGOX SDK V1.2.0-CHT
    • in the guide DRIVERS downloaded ARGOX SEAGULL DRIVER 2019.1_M-3
  • I installed Argox_2019.1_M-3, ARGOX_SDK_V1.2.0_CHT and Printer Utility_v434
  • I changed the target Platform of the project to 32-bit
    • Right click on the project > Properties > Build > Platform target: x86
  • I copied Winport.dll and Winppla.dll 32-bit to the project’s bin folder
    • are in Command Library V410 PPLA Library 32-bit
  • Dei clean and rebuild in solution
  • I executed the project

And then it worked! I hope it helps you, in case you haven’t solved the problem yet!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.