Bug #79

CW2Dymola driver nelze pridat mezi ovladace CW 6.

Added by Tomáš Kulhánek about 13 years ago. Updated about 11 years ago.

Status:ResolvedStart date:17 April 2012
Priority:NormalDue date:
Assignee:Tomáš Kulhánek% Done:

100%

Category:-Spent time:10.00 hours
Target version:-

Description

CW2Dymola driver nelze pridat mezi ovladace CW 6 pres Nastroje -> Konfigurace ovladacu -> Pridat -> ... vybrano DLL. -> objevi se dialog "Nelze zavest DLL"

1. vyzkousena verze ovladace zkompilovano s volbou "Character Set": MULTI-BYTE
2. vyzkousena verze ovladace zkompilovano s volbou "Character Set": UNICODE

prilozen soubor cw2dymoladriver se zdrojovymi kody ovladace - CW2DymolaDriver.cpp

cw2dymoladriver.dll - nove DLL s exportovanymi symboly (88 KB) Tomáš Kulhánek, 18 April 2012 14:24

cw2dymoladriver.zip - aktualizovane zdrojove kody s testy driveru (1.38 MB) Tomáš Kulhánek, 18 April 2012 14:46

History

#1 Updated by Tomáš Kulhánek about 13 years ago

Control Web 6.1 SP8 UNICODE
platforma: Windows 2008 R2, SP1, Intel XEON (4 CPU)
6 GB RAM
(full virtualization on XEN 3.2)

#2 Updated by Tomáš Kulhánek about 13 years ago

On 04/18/2012 01:40 PM, Mirek Zálešák wrote:
Vaše knihovna CW2DymolaDriver.dll nevyváží žádné symboly. Měla by vyvýžet symboly, které CW očekává od ovladačů:

BufferInfo
Check
DisposeDriver
Done
DriverProc
GetDriverInfo
GetInput
Init
InputFinalized
InputRequest
InputRequestCompleted
MakeDriver
OutputFinalized
OutputRequest
OutputRequestCompleted
QueryProc
SetBufferAddr
Version

#3 Updated by Tomáš Kulhánek about 13 years ago

opraven kompilovani a explicitne deklarovano makro
#define DLLEXPORT __declspec( dllexport )
pred kazdou funkci, jejiz symbol ma byt dostupny v DLL volano toto makro.
..
DLLEXPORT unsigned Version(void);
..

Nove zkompilovane DLL uz ma exportovane symboly - aspon podle DLL Export Viewer.
Nicmene toto nove DLL opet nelze pridat mezi ovladace CW.

#4 Updated by Tomáš Kulhánek about 13 years ago

  • % Done changed from 0 to 30

#6 Updated by Tomáš Kulhánek about 13 years ago

  • File deleted (cw2dymoladriver.zip)

#7 Updated by Tomáš Kulhánek about 13 years ago

  • Status changed from New to Resolved
  • % Done changed from 30 to 100

- funkce driveru musí být v C notaci volání (použití extern "C" {} a _cdecl)

#ifdef __cplusplus
extern "C" {
#endif
DLLEXPORT unsigned __cdecl Version();
...
#ifdef __cplusplus
}
#endif

- navíc všechny exportované symboly musí být explicitně deklarované (
_declspec (dllexport))
#define DLLEXPORT __declspec( dllexport )
#define DLLEXPORTVOID DLLEXPORT void __cdecl
...
DLLEXPORTVOID GetDriverInfo(unsigned szDriverName, char *DriverName);
...
DLLEXPORTVOID DisposeDriver(HANDLE hDriver);
...

- závislé DLL (dymosim.dll a libdsdll.dll) ve stejném adresáři jako cw2dymoladriver.dll

#8 Updated by Tomáš Kulhánek almost 13 years ago

  • Project changed from Physioserver to CW2Dymola
  • Category deleted (Podpůrná infrastruktura)
  • Target version deleted (prototyp s control-webem)

Also available in: Atom PDF