Warsztat - Programowanie gier

Wrzesień 03, 2010, 03:34:51 *
Witamy, Gość. Zaloguj się, lub zarejestruj proszę.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Warsztat, Regulamin forum, #warsztat, Wiki, FAQ, NoPaste, Mapa
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Import DLL napisanej w C#  (Przeczytany 808 razy)
Ayanami
Newbie
*

wiadomości: 26


Zobacz profil
« : Luty 09, 2010, 15:26:07 »

Mam napisany interfejs graficzny w C# w postaci DLL. Chcę zaimportować odpowiednie funkcje w C++.
Znalazłem w sieci informacje, żeby w ogóle to było możliwe trzeba wykonać kilka karkołomnych kroków:

1. Skompilować DLL.
2. Disasemblować ją ildasm.exe.
3. Edytować plik *.il (dodać w sekcji funkcji eksportowanej):
Kod:
.vtentry 1:1
.export [1] as NazwaEksportu
Jednocześnie samemu dbając o numerację kolejnych eksportów.
4. Ponownie skleić DLL do kupy ilasm.exe.

Naprawdę nie istnieje żadna normalna metoda przygotowania DLL napisanej w C#, by można było ją użyć w C++?
Zapisane
Dab
Member2000
*******

wiadomości: 3170


wiadomości: 2963


Zobacz profil WWW
« Odpowiedz #1 : Luty 09, 2010, 15:40:21 »

Możesz użyć C++/CLI
Zapisane

Ayanami
Newbie
*

wiadomości: 26


Zobacz profil
« Odpowiedz #2 : Luty 09, 2010, 15:49:34 »

Jasne, zawsze sobie mogę napisać cały interfejs od nowa w czystym WinAPI. Ale raczej nie o to mi chodzi.
Zapisane
Will
Full Member
***

wiadomości: 187



Zobacz profil
« Odpowiedz #3 : Luty 09, 2010, 15:51:56 »

A kto pisał, że w czystym winapi? Piszesz wrapper w c++/CLI i po problemie.
Zapisane
Nephrite
Newbie
*

wiadomości: 40



Zobacz profil
« Odpowiedz #4 : Luty 09, 2010, 16:08:47 »

http://www.csharphelp.com/2006/05/c-classes-as-com-objects/
Zapisane
Dab
Member2000
*******

wiadomości: 3170


wiadomości: 2963


Zobacz profil WWW
« Odpowiedz #5 : Luty 09, 2010, 16:26:20 »

Jasne, zawsze sobie mogę napisać cały interfejs od nowa w czystym WinAPI. Ale raczej nie o to mi chodzi.
He? Pogooglaj czym jest C++/CLI.
Zapisane

Ayanami
Newbie
*

wiadomości: 26


Zobacz profil
« Odpowiedz #6 : Luty 09, 2010, 16:35:44 »

Oj. Mnie po prostu chodzi o to, żebym najnormalniej w świecie mógł użyć tej C# DLL tak samo jak każdej innej napisanej w C++. Widzę, że jednak zbyt wysokie wymagania mam.
Zapisane
Nephrite
Newbie
*

wiadomości: 40



Zobacz profil
« Odpowiedz #7 : Luty 09, 2010, 17:23:07 »

A kliknąłeś w ogóle w ten link, który podałem?
Zapisane
Dab
Member2000
*******

wiadomości: 3170


wiadomości: 2963


Zobacz profil WWW
« Odpowiedz #8 : Luty 09, 2010, 17:37:07 »

Oj. Mnie po prostu chodzi o to, żebym najnormalniej w świecie mógł użyć tej C# DLL tak samo jak każdej innej napisanej w C++. Widzę, że jednak zbyt wysokie wymagania mam.
"Normalnie" tzn przez LoadLibrary + GetProcAddress? Nie przejdzie, DLL C# nie jest w formacie PE.
Poza tym co byś przekazywał do funkcji? O ile w .NET jest automatyczny system zmiany typów (String -> const char* itd) to w drugą stronę już nie bardzo.
Możesz faktycznie użyć COM ale pod względem wygody użycia nie ma porównania z C++/CLI.
Zapisane

Ayanami
Newbie
*

wiadomości: 26


Zobacz profil
« Odpowiedz #9 : Luty 09, 2010, 17:54:05 »

Aano i właśnie chcę, żeby była w formacie PE. I dzięki ildasm.exe i ilasm.exe dostaję taką DLL. Wszystko rozchodzi się o to, by na etapie budowania projektu otrzymać gotową do użytku bibliotekę.
Zapisane
Aithne
Hero Member
*****

wiadomości: 648


Zobacz profil
« Odpowiedz #10 : Luty 09, 2010, 20:23:32 »

DLL C# nie jest w formacie PE.
Jest. To jest zwykły PE, tylko trzyma kupę metadanych i kod zarządzany zamiast natywnego.
Zapisane
nilphilus
Hero Member
*****

wiadomości: 616


:->


Zobacz profil WWW
« Odpowiedz #11 : Luty 09, 2010, 22:04:29 »

Oj. Mnie po prostu chodzi o to, żebym najnormalniej w świecie mógł użyć tej C# DLL tak samo jak każdej innej napisanej w C++. Widzę, że jednak zbyt wysokie wymagania mam.

Nie wiem jakim cudem za taki komentarz uzyskałeś jeszcze jakiekolwiek odpowiedzi. @Nephrite: coś czuje że nie kliknął.
Zapisane

Powinieneś doskonale znać swoje ograniczenia i się nimi nie przejmować.
Strony: [1]
  Drukuj  
 
Skocz do:  

Hosting: Polska Strefa - Ogłoszenia
Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC