r6034



  • hallo,

    bei der einbindung einer dll bekomme ich beim starten des hauptprogramms einen r6034. ich habe schon viel hier im forum und in netz dazu gefunden, aber leider hilft nichts.

    ich binde zwei selbst erstellt dlls ein, eine funktioniert problemlos. ich habe im visual studio alle einstellungen auf die zweite dll kopiert, besonders in linker->manifestdatei und manifesttool, jedoch ohne erfolg.

    wenn ich die nicht funktionierende dll in visual studio aufmache, sehe ich, dass ein manifest vorhanden ist.
    warum dann die fehlermeldung?

    vielen dank für eure mühe!



  • eventuell ist das eine nützliche information:
    ich habe mit dependency walker in beiden varianten ein profiling gestartet, einmal nicht funktionierendes programm mit dll und einmal funktionierend mit dll dateien direkt im programm einkompiliert. dann habe ich alle fehlermeldungen kopiert und die unterschiede rausgefiltert. leider ist das für mich immernoch nicht zu durchschauen.

    Vergleichen von (<) ok.txt (6438 Byte)
    mit (>) failed.txt (5753 Byte)

    24,32c24,34
    < GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsAlloc") called from "MSVCR90D.DLL" at address 0x00AFE359 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    < GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsGetValue") called from "MSVCR90D.DLL" at address 0x00AFE36D and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    < GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsSetValue") called from "MSVCR90D.DLL" at address 0x00AFE381 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    < GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsFree") called from "MSVCR90D.DLL" at address 0x00AFE395 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    <
    < GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsAlloc") called from "MEPOHNEDLL4.EXE" at address 0x0088B5E9 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    < GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsGetValue") called from "MEPOHNEDLL4.EXE" at address 0x0088B5FD and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    < GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsSetValue") called from "MEPOHNEDLL4.EXE" at address 0x0088B611 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    < GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsFree") called from "MEPOHNEDLL4.EXE" at address 0x0088B625 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    ---
    > GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsAlloc") called from "MSVCR90D.DLL" at address 0x00ADE359 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    > GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsGetValue") called from "MSVCR90D.DLL" at address 0x00ADE36D and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    > GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsSetValue") called from "MSVCR90D.DLL" at address 0x00ADE381 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    > GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsFree") called from "MSVCR90D.DLL" at address 0x00ADE395 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).

    > GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsAlloc") called from "MSVCR80D.DLL" at address 0x010B4A65 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    > GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsGetValue") called from "MSVCR80D.DLL" at address 0x010B4A79 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    > GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsSetValue") called from "MSVCR80D.DLL" at address 0x010B4A8D and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    > GetProcAddress(0x7C800000 [KERNEL32.DLL], "FlsFree") called from "MSVCR80D.DLL" at address 0x010B4AA1 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).

    > GetProcAddress(0x77BE0000 [MSVCRT.DLL], "_get_terminate") called from "MSVCR80D.DLL" at address 0x010B7863 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).

    36,45c38,40
    < GetProcAddress(0x1CC00000 [MXSOUT.DLL], "mxsOpenStorage2") called from "MXS.DLL" at address 0x1CDE1DD0 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    < GetProcAddress(0x1CC00000 [MXSOUT.DLL], "mxsCreateStorage2") called from "MXS.DLL" at address 0x1CDE1DD0 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    <
    < LoadLibraryExW("mxsout_logger.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL by thread 1. Error: Das angegebene Modul wurde nicht gefunden (126).
    <
    < LoadLibraryExW("mxsout_profiler.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL by thread 1. Error: Das angegebene Modul wurde nicht gefunden (126).
    <
    < GetProcAddress(0x64650000 [NISMSLU.DLL], "select") called from "NIRPC.DLL" at address 0x646012F0 and returned NULL by thread 1. Error: Die angegebene Prozedur wurde nicht gefunden (127).
    <
    < LoadLibraryExW("mxsout_profiler", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL by thread 1. Error: Das angegebene Modul wurde nicht gefunden (126).
    ---
    > DllMain(0x010B0000, DLL_PROCESS_ATTACH, 0x0012FD30) in "MSVCR80D.DLL" returned 0 (0x0) by thread 1.

    > Second chance exception 0xC0000005 (Access Violation) occurred at address 0x00000000 by thread 2.

    kann jemand damit etwas anfangen?



  • die fehler genau lauten:

    Debug Error!
    Programm: ...
    R6034
    An application has made an attempt to load the C runtime without using a manifest. This is an unsupported way to load visual C++ dlls. you need to modify your application to build with a manifest. for more information, see the "visual c++ libraries as shared side-by-side assemblies" topic in the product documentation.
    (press retry to debug the application)

    wenn ich dann "retry" klicke kommen gleichzeitig:
    mepOhneDll4.exe - fehler in der anwendung: die anwendung konnte nicht richtig initialisiert werden (0xc0000142).

    und

    Unbehandelte Ausnahme bei 0x00000000 in mepOhneDll4.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.

    ich habe sowohl die application mit einem eingebetteten manifest erstellt, als auch in der genannten produktdokumentation (http://msdn.microsoft.com/de-de/library/ms235624%28VS.80%29.aspx) nachgesehen.



  • ok, ich habe das problem noch weiter eingekreist:
    der fehler tritt nur dann auf, wenn die eine dll auf die andere verweist. jede dll einzeln kann ich im programm einbinden.

    ich habe ein beliebiges wxWidgets samples (grid) genommen und ein objekt aus einer dll instantiiert. das funktionierte mit beides dlls. der fehler trat erst dann auf, wenn die eine dll ihrerseits ein objekt der anderen instantiiert.
    hmmmmmmmmmm..............

    update:
    es scheint ein wxWidgets problem zu sein, ist hier also das falsche forum. das einbinden einer dll, die ihrerseits eine dll einbindet, ist ohne wxWidgets bei mir kein problem.


  • Mod

    Hat denn Deine EXE ein Manifest für die entsprechende MS CRT?
    Dann dürfte der Fehler gar nicht auftreten.

    Oder verwendet diese DLL ein anderes Manifest?
    Kann es sein, dass Dieine DLLs überhaupt andere/unterschiedliche CRT Manifeste haben?



  • zum testen habe ich eine exe aus den wxWidgets demoprogrammen genommen (grid sample). es geht alles, wenn nicht beide dlls wxWidgets nutzen. insofern wird das problem irgendwo bei wxWidgets in verbindung mit windows liegen schätze ich.

    auf linux war es noch kein problem, wenn mehrere dlls voneinander abhängen und alle wxWidgets nutzen. aber das ist auch schon ein jahr her, insodern bin ich nicht sicher, ob das problem nicht doch von einer anderen änderung im programm ausgelöst wurde.
    ich habe auch schon im wxWidgets forum einen hinweis gefunden, dass es eventuell am visual studio liegt und man nach dem kompilieren nochmal per hand das manifest einbetten muss. http://forums.wxwidgets.org/viewtopic.php?t=19294&highlight=r6034
    das konnte ich aber bislang noch nicht testen.


  • Mod

    Am Besten sollte nur die EXE ein Manifest haben und keine der DLLs.
    So würde ich es machen.

    Ich habe in meinem Blog x-Artikel zu diesem Thema geschrieben:
    http://blog.m-ri.de/index.php/tag/manifest/



  • ah, vielen dank! ich werde mich da mal reinlesen.
    mittlerweile muss ich auch meine aussage relativieren, dass zwei wxWidgets dlls miteinander probleme machen.
    ich experimentieren gerade mit minimalen projekten/dlls rum. falls ich die lösung finden sollte, werde ich sie hier posten.



  • ok, das problem ist gelöst, obwohl ich nicht wirklich verstehe warum:

    eine der beiden dlls linkte in das $(WXWIN)/lib/vc_lib und die andere in das $(WXWIN)/lib/vc_dll verzeichnis.
    ebenso $(WXADDITIONS)/lib/vc_lib.

    diesen kleinen unterschied habe ich etliche male übersehen 😡

    das problem verschwand, als ich beide in vc_lib linkte. auf der R6034 fehler ist verschwunden, obwohl ich ja nichts an den manifesten geändert habe. ärgerlich verwirrende fehlermeldung...


Anmelden zum Antworten