[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

Jak uzyc w projekcie C++ dllki napisanej w C#?

badzio

3/18/2007 3:41:00 PM

Witam
Mam nastepujacy problem: producent skanera RFID udostepnia SDK w formie
bibliotek napisanych w c#. Moja aplikacja napisana jest w 'zwyklym' (nie
dotnetowym) visualu, w c++. Da rade uzyc tej biblioteki w moim
projekcie? Jesli tak, to jak? Googlalem ale google mowia o przypadkach
odwrotnych - uzywaniu bibliotek c++ (unmanaged code) w projektach
dotnetowych. Znalazlem tez cos odnosnie sytuacji gdy chcemy wykorzystac
dllke c# w c++ ale 'dotnetowym'. A chwilowo nie wchodzi w gre
przeniesienie projektu na nowego visuala.
Chwilowo urzadzenie docelowe nie ma frameworka microsoftowego, ale jesli
bedzie to niezbedne (a obawiam sie ze bedzie) to zostanie doinstalowany.
Aha... zeby jescze skomplikowac calosc, rzecz sie tyczy PocketPC -
PocketPC2003 albo WindowsMobile 5.
A, oczywiscie dolaczana biblioteka dotnetowa nie zawiera raczej metod
statycznych.
Ktos ma jakies pomysly?
--
badzio
5 Answers

Jacek Czerwinski

3/18/2007 3:48:00 PM

0

Dnia Sun, 18 Mar 2007 16:40:48 +0100, badzio napisa3(a):

> Witam
> Mam nastepujacy problem: producent skanera RFID udostepnia SDK w formie
> bibliotek napisanych w c#. Moja aplikacja napisana jest w 'zwyklym' (nie
> dotnetowym) visualu, w c++. Da rade uzyc tej biblioteki w moim
> projekcie? Jesli tak, to jak?
Nie jest to naturalne. Mo?na by podaa z 15 argumentów dlaczego.

> Googlalem ale google mowia o przypadkach
> odwrotnych - uzywaniu bibliotek c++ (unmanaged code) w projektach
> dotnetowych. Znalazlem tez cos odnosnie sytuacji gdy chcemy wykorzystac
> dllke c# w c++ ale 'dotnetowym'. A chwilowo nie wchodzi w gre
> przeniesienie projektu na nowego visuala.
..NET Compact Framework jest za friko. W czym problem ? W zamieszaniu
marketingowym chyba ...
Nie przesadzaj o wielko?ci? projektów pocketowych, zwykle trzy formy...
lepiej przenie?a u pocz?tku projektu ni? potem.


> Chwilowo urzadzenie docelowe nie ma frameworka microsoftowego, ale jesli
> bedzie to niezbedne (a obawiam sie ze bedzie) to zostanie doinstalowany.
Co? krecisz, jak bez frameworka wykoanasz biblioteke w C# (niezale?nie od
sposobu wywo3ania) ?

> Aha... zeby jescze skomplikowac calosc, rzecz sie tyczy PocketPC -
> PocketPC2003 albo WindowsMobile 5.
> A, oczywiscie dolaczana biblioteka dotnetowa nie zawiera raczej metod
> statycznych.
Managed code C++ ? Brr, osobi?cie tego nie u?ywa3em, ale wiem ?e jest.

badzio

3/18/2007 4:21:00 PM

0

Jacek Czerwinski napisa3(a):
>> Mam nastepujacy problem: producent skanera RFID udostepnia SDK w formie
>> bibliotek napisanych w c#. Moja aplikacja napisana jest w 'zwyklym' (nie
>> dotnetowym) visualu, w c++. Da rade uzyc tej biblioteki w moim
>> projekcie? Jesli tak, to jak?
> Nie jest to naturalne. Mo?na by podaa z 15 argumentów dlaczego.
Pewnie moznaby podac wiecej niz 15 argumentow. Mimo wszystko musze
jednak tak zrobic :/
> Nie przesadzaj o wielko?ci? projektów pocketowych, zwykle trzy formy...
> lepiej przenie?a u pocz?tku projektu ni? potem.
1) Form jest wiecej niz 3. Nie chce mi sie liczyc, ale stawialbym ze co
najmniej 50. Projekt mysle ze jest wiekszy niz przecietny.
2) Aplikacja korzysta aktualnie ze skanerow dwoch producentow. I wg
mojej wiedzy obaj udostepniaja SDK napisane w 'klasycznym' c++ (wiem,
mozna je wykorzystac w projekcie dotnetowym, ale mimo wszystko nie jest
to takie hop-siup).
3) Kwestia sprawdzenia czy sybase wspiera konfiguracje dotnet +
ultralite + mobilink
4) Koniecznosc zachowania kompatybilnosci 'wstecz' - aplikacja jako taka
dziala na PPC2002, 2003 oraz WM5. Aplikacje napisane w eVC++ 4.0 nie
dzialaja na PPC2002 wiec podejrzewam ze z zainstalowaniem frameworka na
PPC2k2 tez bedzie problem. Pewnie sie zapytasz to jak w takim razie chce
na PPC2k2 wykorzystac to SDK dotnetowe? Otoz nie chce - jesli mam do
czynienia z ppc2k2 (a to mozna sprawdzic) po prostu nie bede probowal
inicjalizowac nowego skanera bo wiem ze i tak go tam nie ma, wiec nie
bedzie potrzeby ladowania biblioteki.
5) Trzymanie dwoch lini zrodel (c++ oraz c#) nie bardzo mi sie usmiecha.
Z drugiej strony glupio zeby PocketPC za 3k ojro lezalo bezuzytecznie na
biurku.
6) Przepisanie wszystkiego od nowa wydaje sie byc kuszace. Ale... zajmie
to dosc duzo czasu - aplikacje (bodajze 7) to cos wiecej niz 5 klas i
1kB kodu na program. Projekt pisany byl przez wiecej niz jedna osobe i
dluzej niz przez m-c, z ktorym pozostalem tylko ja. Znajac zycie i prawa
murphy'ego calosc nie dzialalaby od razu poprawnie. Z mojego punktu
widzenia - spoko, zajecie by bylo, okazja do uporzadkowania kodu. Tylko
ze boss moze miec inne podejscie.
Dlatego tez na razie robie maly research czy da sie wykorzystac
biblioteki dotnetowe w projekcie niedotnetowym (i ile czasu ew to
zajmie). Jesli okaze sie sie ze nie da rady - to wtedy juz nie ja bede
decydowal co jest oplacalne z punktu widzenia firmy.
--
badzio

tmk__

3/18/2007 5:33:00 PM

0

badzio napisa3(a):
> Witam
> Mam nastepujacy problem: producent skanera RFID udostepnia SDK w formie
> bibliotek napisanych w c#. Moja aplikacja napisana jest w 'zwyklym' (nie
> dotnetowym) visualu, w c++. Da rade uzyc tej biblioteki w moim

> Ktos ma jakies pomysly?

witam,
sam takich sztuk nie próbowa3em,
ale wiem ?e wcze?niej czy pó?niej problem i mnie dosiegnie, wiec ciekawy
jestem rozwi?zania.

mo?e to pomo?e:
http://www.codeguru.pl/articl...

Segmentation Fault

3/18/2007 6:42:00 PM

0

badzio wrote:
> Witam
> Mam nastepujacy problem: producent skanera RFID udostepnia SDK w formie
> bibliotek napisanych w c#. Moja aplikacja napisana jest w 'zwyklym' (nie
> dotnetowym) visualu, w c++. Da rade uzyc tej biblioteki w moim
> projekcie? Jesli tak, to jak? Googlalem ale google mowia o przypadkach
> odwrotnych - uzywaniu bibliotek c++ (unmanaged code) w projektach
> dotnetowych. Znalazlem tez cos odnosnie sytuacji gdy chcemy wykorzystac
> dllke c# w c++ ale 'dotnetowym'. A chwilowo nie wchodzi w gre
> przeniesienie projektu na nowego visuala.
> Chwilowo urzadzenie docelowe nie ma frameworka microsoftowego, ale jesli
> bedzie to niezbedne (a obawiam sie ze bedzie) to zostanie doinstalowany.
> Aha... zeby jescze skomplikowac calosc, rzecz sie tyczy PocketPC -
> PocketPC2003 albo WindowsMobile 5.
> A, oczywiscie dolaczana biblioteka dotnetowa nie zawiera raczej metod
> statycznych.
> Ktos ma jakies pomysly?

W "du?ym" frameworku mo?na do zrobia wystawiaj?c dotnetowy "com component"
i korzystaa z tego komponentu w programie c++. (szukaj "com interop").

W compact framework 2 jest com interop, ale go nie u?ywa3em wiec
nie wiem czy i jak bardzo jest okrojony.

Muchomor

3/18/2007 10:08:00 PM

0


"badzio" <badzio@niepotrzebneskreslic.epf.pl> wrote
> Witam
> Mam nastepujacy problem: producent skanera RFID udostepnia SDK w formie
> bibliotek napisanych w c#. Moja aplikacja napisana jest w 'zwyklym' (nie
> dotnetowym) visualu, w c++. Da rade uzyc tej biblioteki w moim projekcie?
Opakowujesz interesujace Cie SDK we wrapper w C# jako class library,
ustawiasz COM interoperability na true w project settings i budujesz.
Dostajesz dll, ktora potem przepuszczasz przez "regasm /tlb TwojDLL.dll"
(skaldnia pisana z pamieci - sprawdz!). Dostajesz plik TwojDLL.tlb, ktorego
uzywasz jak biblioteki typow w projekcie C++. W kodzie C++ piszesz #import
"pathToDllFolder/TwojDLL.tlb", a dalej juz normalnie jak to z COM.

pzdr
Muchomor