Dll mit VC++ erstellen und in VB benutzen

  • Themenstarter Themenstarter svebert
  • Beginndatum Beginndatum
S

svebert

Guten Tach! Ich hab ein Problem und zwar möchte ich eine DLL erstellen um dann darauf mit Visual Basic zuzugreifen (Wie API-Funktionen). Ich hab' mir schon alle Beiträge hier im Forum angesehen und hab' gegooglt, aber nix brauchbares gefunden.
Also hab' gerade erst angefangen mit C++ zu programmieren. Jedenfalls bekomme ich das nicht gebacken. Ich bräuchte nur mal so eine schritt für schritt anweisung, was ich in VC++ für ein Projekt öffnen soll, ob es leer sein soll, oder nicht und so weiter und so fort.

Es reicht als Beispiel irgendwas schäbiges. Ne Hallo-Welt-DLL wäre nett, oder so.


Danke im Vorraus!
 
Ich mach ein DLL-Projekt in Visual C++. Dann erstelle ich in der .cpp Datei eine Funktion. Nach dem ich die Dll mit einem VB programm debuggen möchte, wird nur die dllmain-Funktion aufgerufen, aber nicht die Funktion, die ich in VB deklariert habe.

C++ Code:

mandeldll.cpp
Code:
// mandeldll.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"


#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}

 int iteration(int maxn, float xa, float ya)
{
	int i;
	float rn1=0;
	float rn0=0;
	float in0=0;	
	for(i=2;i<=(maxn+2);i++)
	{
			rn1=rn0*rn0-in0*in0+xa;
            in0=2*rn0*in0+ya;
            rn0=rn1;
            //Wenn Komplexe Zahl Divergiert (Ins unendliche geht)
            if((rn0*rn0+in0*in0)>4)
			{break;}           

	}
	return i;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

stdafx.cpp
Code:
// stdafx.cpp : source file that includes just the standard includes
// mandeldll.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information

#include "stdafx.h"

// TODO: reference any additional headers you need in STDAFX.H
// and not in this file

stdafx.h
Code:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#pragma once

// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER				// Allow use of features specific to Windows 95 and Windows NT 4 or later.
#define WINVER 0x0400		// Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif

#ifndef _WIN32_WINNT		// Allow use of features specific to Windows NT 4 or later.
#define _WIN32_WINNT 0x0400		// Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif						

#ifndef _WIN32_WINDOWS		// Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later.
#endif

#ifndef _WIN32_IE			// Allow use of features specific to IE 4.0 or later.
#define _WIN32_IE 0x0400	// Change this to the appropriate value to target IE 5.0 or later.
#endif

#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>



// TODO: reference additional headers your program requires here

int iteration(int maxn, float xa, float ya);

VB-Code:

Code:
Private Declare Function iteration Lib "C:\Dokumente und Einstellungen\...\Debug\mandeldll.dll" (maxn As Long, xa As Single, ya As Single) As Long

Aufruf der Funktion in VB
Code:
...
i = iteration(maxn, xa, ya)
...
 
moin


Hast du dir das Tutzorial mal angeguckt?
Ich kenn mich dem Thema auch nciht wirklich aus, aber dort machen sie es anders.


mfg
umbrasaxum
 
Zurück