webForumDet fria alternativet

Error in loading DLL

9 svar · 472 visningar · startad av Erik Juhlin

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#1

Vi har ett ganska stort problem här på kontoret.
Helt plötsligt har vi fått felet "Error in loading DLL" på ett flertal ställen. Vi vet var det uppkommer och hur vi fixar det. Men vi vet inte varför det börjat komma och fixen vi har är inte den smidigaste.

Det konstiga är att det hänt både med e-handelssystemet som min chef är ansvarig för och webbpubliceringssystemet som jag är ansvarig för.
Och det har hänt både på den lokala utvecklingsmaskinen och på den skarpa servern.
Vi har gissat oss till att det måste vara något när vi kompilerar. Något i inställningarna i projektet. Men vi hittar inget. :x

Felet uppkommer på vissa ställen där vi använder early binding. Vi använder inte early binding till andra projekt utom de mest vanliga som ADODB.Recordset, Scripting.Dictionary o.s.v.
Däremot inom det egna projektet använder vi det. Och det ska ju egentligen inte vara något problem, men nu blir det fel ibland.
Bytar vi till late binding på de ställena det blir fel på så löser det sig, men det känns fel och tar en jäkla tid att hålla på med. :l

Så vet någon vad detta beror på och hur man fixar det på ett rätt och smidigt sätt? :)

nikoMedlem sedan juni 20022 599 inlägg
#2

Hänger inte riktigt med .. Är det en com-dll skriven i VB6 som ger detta fel då den laddas i en Windowsapplikation skriven i VB6? Skriv lite fler detaljer, tack. :)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#3

Det är en COM-DLL skriven i VB, ja.
Felet kommer både när de anropas från exe filer (batch jobb) och när de anropas från webbsidor. :(

nikoMedlem sedan juni 20022 599 inlägg
#4

Gissar:

Ni har gjort ändringar i Dll:ens interface och inte kompilerat om applikationerna som använder den? (Late-binding anropar default-interfacet och funkar därför).
Dll:en är beroende av andra komponenter och dessa har på något sätt bytts ut/förändrats?

Din beskrivning av problemet är tyvärr lite för allmän för att man ska kunna svara bättre. :l

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#5

Men det kluddiga är ju att vi inte har early binding till andra projekt än de mest vanliga. Och dessa har vi inga problem med.

Kan du förklara lite mer hur du menar och hur man ska lösa det om det är som du säger?

nikoMedlem sedan juni 20022 599 inlägg
#6

Kan du förklara lite mer hur du menar och hur man ska lösa det om det är som du säger?

Jag önskar jag kunde. Kan du inte ge mer detaljer om hur problemet uppstod? Något måste ju ha ändrats.

Har ni gjort ändringar i dll:en? I så fall vilka? Har ni kompilerat om de applikationer som använder dll:en efter detta?

Går problemet att återskapa? Hur/när inträffar det mer exakt?

Anropas dll:en med early binding i ASP-sidor. Hur?

Använder dll:en andra dll:er som på något sätt ändrats?

Använder ni "binary compatibility" när ni kompilerar?

Är det en com-dll eller com+? Är den länkad med ASP-libben?

Har ni installerat nya sp:s till operativet eller till Visual Studio? Andra förändringar?

Som det är nu så är din problembeskrivning ungefär som: "Min bil startar inte. Varför?" :l

Det här kanske är intressant om ni använder collections: http://www.avdf.com/jan98/art_id004.html.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#7

"Har ni gjort ändringar i dll:en? I så fall vilka? Har ni kompilerat om de applikationer som använder dll:en efter detta?"

Jag har tagit bort compatibility till no compatibility. Men det har inte chefen gjort i sina projekt.
Självklart är det kompilerat eftersom att vi bara har early binding inom projektet. Det händer alltså när man anropar en klass inom samma VB-projekt.

"Går problemet att återskapa? Hur/när inträffar det mer exakt?"

Det brukar komma när man går från en klass som har UsesTransaction till en som har RequiresTransaction och sen tillbaka till den som har UsesTransaction. Felet kommer när man gör CreateObject, men kommer bara om man har early binding.

"Anropas dll:en med early binding i ASP-sidor. Hur?"

Nej, det går inte att ha early binding från ASP-sidor.

"Använder dll:en andra dll:er som på något sätt ändrats?"

Jo, men i de fallen DLL:en använder andra DLL:er så är det early binding som gäller.

"Använder ni "binary compatibility" när ni kompilerar?"

Nej, vi provade med det, men det hjälpte inte och vi fick andra problem då också.

"Är det en com-dll eller com+? Är den länkad med ASP-libben?"

Vet faktiskt inte om det är COM eller COM+. :r
Du menar väl "ASPTypeLibrary.ScriptingContext"? Jo, den ligger i referenserna.

"Har ni installerat nya sp:s till operativet eller till Visual Studio? Andra förändringar?"

Nej några såna kan vi inte komma på. Vi har ju bytat server i skarpt läge, men utvecklingsservern är ju den samma.

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#8

Vi kör med VB6...

nikoMedlem sedan juni 20022 599 inlägg
#9

Ja, du .. Kan inte påstå att jag har hela bilden klar för mig, men det klarnade lite iaf.

Tyvärr så har jag inte så mycket att komma med, mer än lite allmänna konstateranden:

När man använder "late binding" så utforskas COM-komponentens interface run-time.

När man använder "early binding" så utforskas COM-komponentens interface vid kompileringen och addresser till metoder och properties "hårdkodas" in i den anropande modulen.

Eftersom late binding fungerar i ert fall men inte early binding så verkar det ju vara så att en (eller flera) komponters interface har ändrats så att de inte längre stämmer med vad de anropande modulerna förväntar sig.

Nånstans finns det alltså en versionskonflikt och något har ändrats utan att omkompilering har skett.

Eventuellt så kan det vara något mer exotiskt fel som beror på transaktionshantering du nämner (RequiresTransaction -UsesTransaction). Men då borde ju problemet ha funnits redan innan, om inte detta är något nytt?

Tyvärr så är nog det enda (flummiga) råd jag kan ge att ni försöker sätta upp delar av systemet på en "clean" utvecklingsmaskin, ser om ni kan återskapa problemet, och debuggar därifrån. :l

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#10

Väldigt underligt. Eftersom att det är just inom det egna projektet det krånglar. :l

Men tack ändå för hjälpen. Har blivit lite klokare nu i alla fall. :)

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)