Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 4.068 pregleda

Najnovija ↓

"Premoscavanje" "klasicnog" i .net dll-a 28.07.2007. u 23:42 · pre 234 meseca #1
Nije bas najsrecniji naslov...

O cemu se radi.. Cesto neke aplikacije imaju podrsku za plugin-ove. To je obicno realizovano tako sto onaj ko pravi plug-in napravi .dll sa C++ funkcijama (slicnim kao Win32 API) koje onda glavna aplikacija poziva.
E sad, posto ja C++ bas i ne znam nesto narocito dobro i posto sada C++ moze da koristi .NET potrebna mi je sledeca stvar - "klasican" dll koji ce imati neku fuknkciju koja ce, kada je aplikacija pozove, da pozove funkciju iz .net dll-a (class library) koji bih ja napravio.
Znaci, ako bi neko napisao samo taj poziv u c++u i okacio project uz poruku pa bih ja to na dalje koristio kao sablon (dodavao na isti nacin funkcije, menjao ime i parametre itd) bio bih zahvalan :)

Nadam se da sam uspeo da napisem dovoljno razumljivo
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: "Premoscavanje" "klasicnog" i .net dll-a 29.07.2007. u 01:18 · pre 234 meseca #3
Nije to to. Tu su date deklaracije za pozivanje Win32 API-a iz .net aplikacije.
Meni treba pozivanje .net funkcije (odnosno metoda neke klase) iz C++ projekta.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: "Premoscavanje" "klasicnog" i .net dll-a 29.07.2007. u 01:20 · pre 234 meseca #4
ANSI c++ ili ovaj C++ iz .NET?
Ne razumemo te :)
Recimo pišeš .dll u c# i hoćeš to u Managed c++, jel to?
Ako je tako:

Napravio sam jedan .dll u C#
Code:

using System;
using System.Collections.Generic;
using System.Text;

namespace Sabiranje
{
   public class Sabiranje
   {
       public static int Saberi(int x, int y)
       {
           return x + y;
       }
   }
}

Napravio novi c++ win forms projekat.
Ides na project > References... > Add new reference... > Browse...
I tamo prođeš .dll koji te zanima.
Postaviš jedno dugme na formu
I napišeš sledeći kod u click eventu:
Code:

int y = Sabiranje::Sabiranje::Saberi(5,6);
MessageBox::Show(y.ToString());


Ako nije, pojasni :)
Potpis
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
Re: "Premoscavanje" "klasicnog" i .net dll-a 29.07.2007. u 02:10 · pre 234 meseca
izmenjeno 1 put, poslednji put Shadowed 29.07.2007. u 10:40
  1. Shadowed29.07.2007. u 10:40zapis iz teksta poruke
#5
E to :)

Samo, da taj projekat u C++ ne bude GUI aplikacija, nego .dll sa obicnim funkcijama.
Znaci ovo:
Code:
int y = Sabiranje::Sabiranje::Saberi(5,6);
MessageBox::Show(y.ToString());


Se ne poziva klikom na taster, vec pozivom exportovane (ili kako se zove) funkcije.

Znaci (u slucaju plugin-a): Winamp --> C++.dll saberi(2, 4) --> C#/VB .dll saberi(2, 4)
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: "Premoscavanje" "klasicnog" i .net dll-a 30.07.2007. u 01:14 · pre 234 meseca #7
Čoveka zapravo zanima kako napraviti .DLL u C++ koji ima referencu na neki drugi (externi) .DLL i kako da pozove metode iz externog .DLL-a u svom .DLL-u.
Možda bi bilo najbolje da ovo premestiš u c++ forum jer pitanje nema toliko veze sa .NET i buni ljude.
Potpis
77 77 77 2E 65 73 6E 69 70 73 2E 63 6F 6D
Re: "Premoscavanje" "klasicnog" i .net dll-a 30.07.2007. u 01:49 · pre 234 meseca #8
Da, upravo to.

Ostavicu jos par dana, pa ako ne bude resenja prebacicu u C++ forum.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: "Premoscavanje" "klasicnog" i .net dll-a 30.07.2007. u 10:00 · pre 234 meseca #9
Kakav DLL si imao na umu, MFC ili Win32, ili ti je samo bitno da calling convention funkcija ima C++ dekoraciju ?
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Re: "Premoscavanje" "klasicnog" i .net dll-a 30.07.2007. u 11:47 · pre 234 meseca #10
Win32, kao sto su API funkcije (SetWindowPos npr.). Ovo sa C++ dekoracijom ne razumem, verovatno jer nemam pojma C++ :)
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: "Premoscavanje" "klasicnog" i .net dll-a 30.07.2007. u 15:18 · pre 234 meseca
izmenjeno 1 put, poslednji put dusty 30.07.2007. u 16:58
  1. dusty30.07.2007. u 16:58zapis iz teksta poruke
#11
Tja, prekopao sam po disku, ali mi je izgleda ta aplikacija kod kuce na bekapu.

Davno sam to radio, ali uglavnom, managed dll koji ce da korsiti Win32 dll treba da bude registrovani COM objekat, sto je, je'l te logicno jer je sam CLI baziran na COM-u :)
Napravis u managed dll-u interfejs za tvoj tip (nisam siguran da li mora da se dodaju IUnknown i IDispatch interfejsi ili to sam kompajler ubaci) i registrujes ga preko RegAsm. RegAsm izgenerise type library (tlb) koji uvezes najobicnije sa #import "MyDLL.tlb" using MyDLLNamespace, inicijalizujes COM (CoInitializeEx(NULL)) i deklarises pointer na interfejs tvoga tipa i kreiras instancu preko CoCreateInstance. Pristupanje promenljivama je moguce samo preko accessora-a, koje ce kompajer (ako se ne varam) da pretvori u dve metode sa prefiksom set_* , odnosno get_*.

Koliko se secam, ne mogu se praviti smart pointeri nad tvojim tipom (bese tu neka cela zavrzlama), pa moras da pazis da ih deinicijalizujes sa Release() kada zavrsis sa njima.

Nasao sam nesto .... might help ....
http://support.microsoft.com/kb/828736
http://msdn2.microsoft.com/en-us/library/zsfww439(vs.71).aspx
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme