Fehlermeldung bei LoadLibrary



  • Hallo Zusammen,

    ich bin gerade dabei ein C++ Programm mit eVC++ zu schreiben. Dabei möchte ich den Befehl LoadLibrary ausführen um eine .dll zu laden. Beim Kompilieren kommt folgende Fehlermeldung:

    E:\Dokumente und Einstellungen\rrflin\Desktop\CAN_Read_Write_dll\a\dummy\dummyDlg.cpp(117) : error C2664: 'LoadLibraryW' : cannot convert parameter 1 from 'char [6]' to 'const unsigned short *'

    Der Fehler tritt auf, in der Zeile:
    HINSTANCE hm = LoadLibrary("a.dll");

    Die .dll heißt a.dll. Hier ist der Code mit dem ich Versuche die a.dll zu laden:

    #include <stdio.h>
    #include <windows.h>
    #include <iostream.h>
    #include "stdafx.h"
    #include "dummy.h"
    #include "dummyDlg.h"
    #include "a.h"
    #include "CAN.h"
    #include "canbusio.h"
    
    	void CDummyDlg::OnButton1() 
    {
    	// TODO: Add your control notification handler code here
    
    	typedef char* (*PFUNC_charp)(void);
    	typedef void (*PFUNC_void)(void);
    	//const unsigned short dll_name[6]={'a','.','d','l','l','\0'};
    	const unsigned short dll_func_name[9] ={'C','A','N','_','I','n','i','t','\0'};
    	int dll_count=0;
    	char *dll_fp;
    	HINSTANCE hm = LoadLibrary("a.dll");
        if (!hm)
        {
          //printf("Konnte DLL a.dll nicht laden!\n");
        }
    
    PFUNC_charp init_plugin = (PFUNC_charp)GetProcAddress((HINSTANCE)hm, &dll_func_name[0]);    
    
    	if (init_plugin != NULL)
        {
    		//printf ("CAN_Init existiert!\n"); 
    		dll_fp=init_plugin(); 
    
    		//const unsigned short *func_name = (unsigned short)&dll_fp;
    				//PFUNC_void function2 = (PFUNC_charp)GetProcAddress((HINSTANCE)hm, func_name);    // hier kracht es!
    
    		//cout << dll_fp << endl;
        }
    	else
    		//printf("init_plugin() nicht gefunden!\n"); 
    
    	FreeLibrary((HMODULE)hm);
    
    }
    

    was mache ich falsch?

    Gruß
    spacehelix



  • Es wird UNICODE verwendest und deshalb musst Du Deine String für OS-Aufrufe mit "L" versehen (oder Du nimmt _T):

    LoadLibrary(L"a.dll")
    

    oeder

    #include <tchar.h>
    LoadLibrary(_T("a.dll"));
    


  • Danke Jochen es funktioniert.


Log in to reply