Visual Objects - import biblioteki DLL

0

Hej! Mam problem z importem biblioteki DLL (np. napisanej w MS Visual C++) do środowiska CA Visual Objects 2.7 :(
W drugą stronę tzn. DLL stworzoną w CA Visual Objects bez problemu importuję do MS Visual C++ i wywołuje funkcje.
Natomiast nie potrafię sobie poradzić z importem zewnętrznych bibliotek i funkcji do CA Visual Objects...
P.S. Nie pytajcie czemu używam tego środowiska :D Po prostu przymus. Dwa dość spore systemy są napisane w tym języku/środowisku i muszę go z grubsza ogarnąć....

0

a konkretnie z czym masz problem? Nie potrafisz kodu napisać, masz błędy podczas importu, masz błędy podczas wywoływania funkcji z tych bibliotek?

0

Tzn. przykładowo jest jakaś funkcja powiedzmy informacja(); stworzona w MS Visual C++. Tą bibliotekę ładuje np. w WxWidgets C++ i wywołuje funkcję informacja() więc biblioteka jest napisana ok. :)
Problem jak chce tą funkcję wywołać z poziomu Visual Objects

 
_DLL FUNCTION informacja() ; AS VOID PASCAL:mojadll.dll

Visual Objects wyrzuca błąd przy kompilacji: Missing library name. Biblioteke przerzuciłem to katalogu tam gdzie jest generowany exe (domyślnie C:\CAVO27\Bin).
W dokumentacji jest przykład na wywołanie funkcji w Windows API...

1

na 99% ma nie być średnika po Informacja() a przed AS

0

O dzięki :) To coś źle odczytałem z dokumentacji, bo taki przykład był :

Examples

The following examples illustrate _DLL declarations for various Windows API functions:

_DLL FUNCTION MessageBeep(siLevel AS SHORTINT) ;

AS VOID PASCAL:USER.MESSAGEBEEP

_DLL FUNCTION MessageBox(hwndParent AS WORD, ;
							 pszText AS PSZ, ;
							 pszCapt AS PSZ, ;
							 wFlags AS WORD) ;
	AS SHORTINT PASCAL:USER.MESSAGEBOX
 

Teraz wyrzuca komunikat "Nie znaleziono punktu wejścia procedury dll w bibliotece mojadll.dll" :/
Hmmm w bibliotece tzn. w kodzie do niej funkcje mam tak zadeklarowaną :

plik mojadll.cpp

 
#include "stdafx.h"
#include "mojadll.h"


MOJADLL_API int nmojadll=0;


MOJADLL_API void informacja(void)
{
	MessageBoxA(NULL, "Przykładowa biblioteka DLL!", "Informacja", MB_ICONINFORMATION);
}

plik mojadll.h

 
#ifdef MOJADLL_EXPORTS
#define MOJADLL_API __declspec(dllexport)
#else
#define MOJADLL_API __declspec(dllimport)
#endif



extern MOJADLL_API int nmojadll;

MOJADLL_API int fnmojadll(void);
extern "C" MOJADLL_API void informacja(void);

plik dllmain.cpp

 
#include "stdafx.h"

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
					 )
{
	switch (ul_reason_for_call)
	{
	case DLL_PROCESS_ATTACH:
	case DLL_THREAD_ATTACH:
	case DLL_THREAD_DETACH:
	case DLL_PROCESS_DETACH:
		break;
	}
	return TRUE;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1