Avatar billede benneharli Juniormester
16. januar 2015 - 18:16 Der er 7 kommentarer og
1 løsning

Anvende en C++ dll i VB.net

Hejsa

Har søgt på Google, og bliver ikke klogere...

Jeg har en dll lavet i C++. Denne dll har nogle funktioner jeg tilgår fra et VB.NET program.

Problemet er at jeg skal sende nogle streng værdier til funktionerne i C++ dll'en. Disse er angivet som CString i C++. Hvilken datatype skal jeg vælge i VB.NET for at C++ CString vil acceptere dem, eller hvordan kan jeg sende strenge til C++ og lave disse om til CString så funktionerne vil anvende dem?

Jeg har source til C++ dll'en og kan ændre i den, men er absolut ikke C++ haj.
Avatar billede Slettet bruger
17. januar 2015 - 02:34 #1
hvilken dll ?
du sku ku slå op på MSDN, hvordan en given ting skal kaldes/håndteres.
hvis det er en den kender..

hvad hedder den og hvor er den fra ?
Avatar billede benneharli Juniormester
17. januar 2015 - 11:27 #2
Det er en dll jeg selv har strikket sammen. Det går fint at sende en integer fra VB.NET til C++ dll'en og også den anden vej, men problemet kommer når jeg prøver en streng værdi.

Har prøvet at sende en "string" fra VB.NET til "CString" i C++ dll'en, men det vil den ikke acceptere. Der må være noget generelt omkring hvordan man kan overføre tekster/strenge mellem de to...?
Avatar billede Slettet bruger
17. januar 2015 - 12:55 #3
du skal kigge på alle disse
https://social.msdn.microsoft.com/Search/en-US?query=vb%20call%20dll%20with%20string&emptyWatermark=true&ac=5

skriv vb call dll with string

det ser ud til den også skal vide om det er c# eller c++ dll :)
Avatar billede Slettet bruger
17. januar 2015 - 12:57 #4
Avatar billede benneharli Juniormester
30. januar 2015 - 02:01 #5
Det er ikke en C# dll men en C++ dll. Det gør en stor forskel, hvad jeg lige kan se.

Jeg har brug for et eksempel på:

Datatype i C++ dll: CString
Datatype i VB.NET function der sendes til C++ dll: ???

Her er funktionen fra C++ dll'en:

extern "C" __declspec(dllexport) bool SetConnInfo(CString strUsername, CString strPassword, CString strHost, int uiPort)
{
    bool res = true;
   
    try {
    m_strUsername = strUsername;
    m_strPassword = strPassword;
    m_strHost = strHost;
    m_uiPort = uiPort;
    } catch (CException* pe) {
        res = false;
    }

    return res;
}
Avatar billede Slettet bruger
30. januar 2015 - 02:12 #6
svaret liggert et sted her:
https://social.technet.microsoft.com/Search/en-US?query=call%20c%2B%2B%20dll%20from%20vb&ac=5

for det er ikke ligegyldig hvilken c++ version eller bv, eller visual studio. så der er ikke et entydigt svar.

c++ og vb behandler strenge forskelligt.

desværre tror jeg du blir nødt til at kigge lidt på de forskellige links der, fordi der umiddelbart ikke lige er noget c++ eksempel.

og det er heller ikke ligegyldigt hvordan din dll er lavet, har jeg lige læst mig frem til.
Avatar billede benneharli Juniormester
30. januar 2015 - 09:23 #7
Fik lige en af vores udviklere til at se på det. Efter hvad han siger, er CString en C++ type, og det går ikke at skrive til den uden at rode med hukommelses og versions kontrol og andet, og det gider jeg ikke lige rode mig ud i.
Avatar billede arne_v Ekspert
31. januar 2015 - 01:29 #8
CString er faktisk en MFC type. Men MFC kan saa vidt jeg ved kun bruges i C++, saa den praktiske forskel er ikke stor.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester