Ik ben al een tijdje aan het kloten met me DLL's, en die buitenom C/C++ te gebruiken, maar het wil nog niet echt lukken. Als ik er een COM DLL van maak dan werkt het vast wel, maar ik wou het niet registreren, gewoon ernaast in de directory.
Hier is de situatie: ik heb een hele mooie klass gemaakt, en die helemaal geexporteerd in een dll. Nou duurde het een tijdje dat ik erachter kwam dat je in VB geen classe DLL imports kan doen, alleen functiones (afgezien van COM dan). Dus ik heb er een simpele wrapper om mijn klasse gemaakt, die gewoon alles afhandelt en een char * teruggeeft. In mijn VB code heb ik tot nu toe dit:
De functie ConnectURL ziet er in C++ gewoon zo uit:
Deze functie deed zeer veel maar nu doet ie alleen maar:
Alle aanroepen, etc gaan gewoon goed in C/C++ programma's. Maar zodra ik bij de lijn ConnectURL("Opera", "http..... aankom, krijg ik een NullReferenceException exception met de mededeling Object reference not set to an instance of an object. (Ook als ik gewoon de functie aanroep, zonder de resultaat te gebruiken, krijg ik dit).
Hoe is dit op te lossen?
Hier is de situatie: ik heb een hele mooie klass gemaakt, en die helemaal geexporteerd in een dll. Nou duurde het een tijdje dat ik erachter kwam dat je in VB geen classe DLL imports kan doen, alleen functiones (afgezien van COM dan). Dus ik heb er een simpele wrapper om mijn klasse gemaakt, die gewoon alles afhandelt en een char * teruggeeft. In mijn VB code heb ik tot nu toe dit:
Visual Basic:
1
2
3
4
5
6
7
| Private Declare Auto Function ConnectURL Lib "<path naar me dll>\DLLWrapper.dll" (ByVal UserAgentString, ByVal httpURL) As String Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim x As String x = ConnectURL("Opera", "http://www.google.com") urlbox.Text = x End Sub |
De functie ConnectURL ziet er in C++ gewoon zo uit:
C:
1
| extern "C" __declspec( dllexport ) char * ConnectURL(char * cUserAgentString, char * chttpURL); |
Deze functie deed zeer veel maar nu doet ie alleen maar:
C:
1
2
3
4
| char * ConnectURL(char * cUserAgentString, char * chttpURL) { char * q = "llalalllllalalla"; return q; } |
Alle aanroepen, etc gaan gewoon goed in C/C++ programma's. Maar zodra ik bij de lijn ConnectURL("Opera", "http..... aankom, krijg ik een NullReferenceException exception met de mededeling Object reference not set to an instance of an object. (Ook als ik gewoon de functie aanroep, zonder de resultaat te gebruiken, krijg ik dit).
Hoe is dit op te lossen?
[ Voor 4% gewijzigd door Darkvater op 07-03-2004 03:05 ]
Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge