Forum: PC-Programmierung PeakCan Usb Dongle


von paula (Gast)


Lesenswert?

Hallo,

bin gerade in der Implementierungsphase einer C++ 
Windowskonsolenanwendung.
Als Kommunikationsschnittstelle zwischen PC und Mikrocontroller setzte 
ich einen PeakCan Usb Dongle ein. Für das Laden der DLL Datei habe ich 
folgende Funktion geschrieben:
1
#include "stdafx.h"
2
3
#define CANUSB
4
#include "PCAN_USB\PCAN_USB.H"
5
#define CAN_HARDWARE "USB"
6
#define CAN_INT -1
7
8
// globale Variablen
9
char LibFileName[] = "PCAN_USB\\PCAN_USB.DLL";
10
HINSTANCE handleDLL = NULL;
11
12
int LoadDLL()
13
{
14
  if(handleDLL  ==NULL)
15
  {
16
    handleDLL  = LoadLibraryW(LPCWSTR(g_LibFileName));
17
    if(handleDLL == NULL)
18
    {
19
      //printf("ERROR: can not load DLL\n");
20
      return -1;
21
    }  
22
    else
23
    {
24
                       ....
25
    }
26
  }
27
  return 0;
28
}

Die DLL kann nicht gefunden bzw. geladen werden. Ich verwende einen PC 
mit Windows7 (64bit).

von lager (Gast)


Lesenswert?

wo liegt sie denn ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

paula schrieb:
> Die DLL kann nicht gefunden bzw. geladen werden

Na, dann hast Du den Fehler ja schon gefunden.

Überprüfe mal den Fehlercode, den GetLastError zurückliefert, der sagt 
mehr als als das von Dir festgestellte "geht nicht".

Wahrscheinliche Fehlerursachen:
- DLL wird vom Programm in einem anderen Verzeichnis gesucht als Du 
annimmst
- DLL ist nicht für die Prozessorarchitektur geeignet, für die Du Dein 
Programm schreibst (ein x64-Programm kann keine x86-DLL laden und 
umgekehrt)

von paula (Gast)


Lesenswert?

In Microsoft Visual Studio habe ich Win32 eingestellt. Die DLL ist auch 
im entsprechenden Verzeichnis vorhanden.

von paula (Gast)


Lesenswert?

handleDLL ist 0

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das "entsprechende Verzeichnis" ist recht sicher das Problem.

Welches Verzeichnis ist zur Programmlaufzeit dessen aktuelles 
Verzeichnis?

Lass mal den (unnötigen) Pfad bei der DLL weg und kopiere die DLL ins 
Debug-Verzeichnis Deines Projektes, also dorthin, wo der Compiler das 
Exe-File erstellt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.