Avatar billede MadsHaupt Juniormester
20. januar 2014 - 16:08 Der er 14 kommentarer og
1 løsning

Entry point

Hvordan kan jeg definere en entry point, i mit visual basic - visual studio projekt?.
Avatar billede arne_v Ekspert
20. januar 2014 - 16:30 #1
Mener du en Main?
Avatar billede MadsHaupt Juniormester
20. januar 2014 - 16:54 #2
Ja, men jeg vil også tilføje en Main i e dll.
Avatar billede arne_v Ekspert
20. januar 2014 - 17:16 #3
??

En EXE koerer selvstaendigt og skal have en Main.

En DLL bruges af en EXE og skal ikke have en Main.
Avatar billede MadsHaupt Juniormester
20. januar 2014 - 17:42 #4
En dll, skal ikke havde en Main, men til det som jeg skal bruge dll'en til, så skal den havde en Main.
Avatar billede MadsHaupt Juniormester
20. januar 2014 - 17:42 #5
Det skal den også hvis jeg skal lave Shell Extension Handlers.
Avatar billede MadsHaupt Juniormester
20. januar 2014 - 17:43 #6
Og i en windows dll.
Avatar billede MadsHaupt Juniormester
20. januar 2014 - 17:45 #7
En Main på en dll, kaldes en dllmain, her kan du læse mere om hvad en dllmain er: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682583%28v=vs.85%29.aspx

Det jeg spørg om er hvordan jeg kan definere sådan en i visual studio i et visual basic projekt.
Avatar billede arne_v Ekspert
20. januar 2014 - 17:52 #8
DllMain har ikke ret meget med en Main at goere.
Avatar billede arne_v Ekspert
20. januar 2014 - 17:52 #9
Hvis du bare skal koere noget kode tidligt, saa bruger man i .NET en static constructor.
Avatar billede arne_v Ekspert
20. januar 2014 - 17:54 #10
Skal du expose et API som har en DllMain fordi kalder forventer det, saa tror jeg at du skal over i noget C++ mixed mode.

kalder--->C++ mixed mode--->VB.NET
Avatar billede MadsHaupt Juniormester
05. februar 2014 - 16:05 #11
Ved du hvor man kan finde noget tutorials for C++ mixed mode?.
Avatar billede arne_v Ekspert
06. februar 2014 - 14:27 #12
Du skal jo nok kunne noget C++.

:-)

Men jeg kan godt proeve at bixe et eksempel i weekenden.
Avatar billede arne_v Ekspert
10. februar 2014 - 04:13 #13
Jeg ved ikke hvor meget du faar ud af det, men her er noget kode.

test.cpp (bare et test program til at teste med):


#include <iostream>

using namespace std;

#include <windows.h>

typedef void (*VF)();

int main()
{
    HINSTANCE glue = LoadLibrary("driver.dll");
    VF f = (VF)GetProcAddress(glue, "f");
    cout << "test main says hi from C++" << endl;
    f();
    return 0;
}


driver.cpp - native DLL med DllMain (man kan ikke bruge DllMain i en mixed mode DLL):


#include <iostream>

using namespace std;

#include <windows.h>

typedef void (*VF)();

static VF realf;

extern "C"
{
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved);
__declspec(dllexport) void f();
}

BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    if(ul_reason_for_call == DLL_PROCESS_ATTACH)
    {
        cout << "driver DlLMain says hi from C++" << endl;
        HINSTANCE glue = LoadLibrary("glue.dll");
        realf = (VF)GetProcAddress(glue, "f");
    }
    return TRUE;
}

__declspec(dllexport) void f()
{
    cout << "driver f says hi from C++" << endl;
    realf();
}


glue.cpp - mixed mode DLL som binder native og managed sammen:


#include <iostream>

using namespace std;

#include <windows.h>

#using <mscorlib.dll>

#using <demo.dll>

using namespace E;

extern "C"
{
__declspec(dllexport) void f();
}

__declspec(dllexport) void f()
{
    cout << "glue f says hi from C++" << endl;
    Demo^ o = gcnew Demo();
    o->F();
}


demo.vb - managed DLL:


Imports System

Namespace E
    Public Class Demo
        Public Sub F()
            Console.WriteLine("Demo.F says hi from VB.NET")
        End Sub
    End Class
End Namespace


build.bat:


vbc /t:library demo.vb
cl /LD /CLR glue.cpp
cl /EHsc /LD driver.cpp
cl /EHsc test.cpp
Avatar billede MadsHaupt Juniormester
15. marts 2014 - 14:38 #14
arne_v har fundet ud af hvad jeg skal gøre, jeg skal først bruge lang tid på at lære c++ moske låne en bog om c++ på biblioteket, og først bagefter forsøge med Shell Extension Habdlers.

arne_v skriv et svar så får du point.
Avatar billede arne_v Ekspert
15. marts 2014 - 14:45 #15
svar
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
Kategori
Kurser inden for grundlæggende programmering

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