Page 1 of 1
Add Application in ein anderes Project per XIDE
Posted: Fri Mar 15, 2024 8:49 am
by lagraf
Hallo,
ich habe ein Projekt LIBS, wo ich eine Sammlung von Libs verwalte, unter anderem eine Wrapper Lib _RKSV 1.76, welche 2 Fremd-Dlls für den Zugriff auf Smartcards referenziert.
In einem anderen Projekt WW habe ich eine App RBKASSA, die diese _RKSV 1.76 referenziert. Dazu habe ich die _RKSV 1.76 per "Add application" aus LIBS hinzugefügt und in RBKASSA referenziert. Starte ich RBKASSA, funktionieren die Zugriffe auf die Smartcard NICHT!
Importiere ich jedoch die App RBKASSA direkt in das Projekt LIBS, dann funktioniert alles! Es klappt also, wenn App und Lib im gleichen Projekt sind, es funktioniert jedoch nicht, wenn die Lib _RKSV 1.76 eingebunden wurde.
Gibt es da ein Problem in XIDE, oder muss ich das anders machen, wenn ich die LIBS anderen Projekten zur Verfügung stellen will?
LG Franz
Re: Add Application in ein anderes Project per XIDE
Posted: Fri Mar 15, 2024 9:17 am
by Chris
Hi Franz,
What do you mean by it does not work, do you get an error message? At compile time or runtime? Are the compiler options the same in both cases? Also the dlls are the correct ones and in the folder when the app runs from (typically the Debug or Release folder)?
There should be no problem for this to work in either way.
Re: Add Application in ein anderes Project per XIDE
Posted: Mon Mar 18, 2024 7:05 am
by lagraf
Hi Chris,
I have a project called RKSV with X# lib _RKSV 1.76 which references 2 extern C# DLLs ITGRKSVCom.dll and RKSVComComplete.dll.
Then I have a second project Warenwirtschaft where I added lib _RKSV 1.76 from project RKSV. Within a testing app TEST I referenced this lib _RKSV 1.76, you see this project in attached jpg.
When I debug app TEST the stack is as follows:
1) call to _RKSV 1.76 class RKSV method GetReadersCount()
2) call to _RKSV 1.76 class RKSVINT method GetReadersCount()
3) call to foreign dll RKSVComComplete method GetReadersCount() -> wrong return of 0
It looks like that this call cannot be done because these 2 DLLs reside in project RKSV and not in project Warenwirtschaft! It comes back with value 0 instead of 1. No errors or warnings at compile and runtime.
Regards, Franz
Re: Add Application in ein anderes Project per XIDE
Posted: Mon Mar 18, 2024 7:27 am
by robert
Franz,
Add a reference to the C# DLLs in your main project and make sure that they are copied to the bin folder.
Robert
Re: Add Application in ein anderes Project per XIDE
Posted: Mon Mar 18, 2024 9:04 am
by lagraf
Hi Robert,
- I added ref ITGRKSVCom.dll and RKSVComComplete.dll to app TEST
- wrote USING RKSVComComplete to code
- wrote USING ITGRKSVCom to code
- compiled with error XS0246 (ITGRKSVCom could not be found)
So I deleted line USING ITGRKSVCom and compiled successful.
Both DLLs are now under project Warenwirtschaft dir \Bin\Debug.
But still no correct return when calling foreign DLL method.
What else can I try?
Franz
Re: Add Application in ein anderes Project per XIDE
Posted: Mon Mar 18, 2024 9:40 am
by Chris
Hi Franz,
There should be absolutely no difference if the dll is part of the project or an external reference. Just please note that for external references, XIDE (like VS) by default automatically copies the referenced dlls to the bin folder, so if you are referencing and older dll version, then this will be always copied to the bin folder when compiling or running from within XIDE, overwritting a different version that might already exist there. This can be changed by clicking Edit/properties on the reference (in the app properties window, or right click on the reference item in the Project explorer) and disabling the "Copy to Bin folder" option, but I wouldn't suggest doing that, instead make sure that you are referencing the correct version.
So, please do as Robert said, and if this still doesn't work, can you please zip and send me the two projects, so I can have a look here?
Re: Add Application in ein anderes Project per XIDE
Posted: Tue Mar 19, 2024 7:51 am
by lagraf
Hi Chris, I found it!
The 2 foreign DLLs reference 3 more foreign DLLs and these are not copied to the bin folder when compiling, cause XIDE has no knowledge about them.
I copied all 5 DLLs into bin folder and then it worked!
Thanks, Franz