Menu

#176 QtCore4.dll: procedure enty point not found

v1.0_(example)
open
nobody
None
1
2012-12-19
2012-12-15
SprinterSB
No

Hi, I just upgraded from 0.9.95 to 0.9.97 (KDiff3-32bit-Setup_0.9.97.exe) but the new executable won't start.
Which means that some prcedure enty point was not found. The system log says:

Anwendungspopup: kdiff3.exe - Einsprungpunkt nicht gefunden: Der Prozedureinsprungpunkt "_Z23qt_qFindChildren_helperPK7QObjectRK7QStringPK7QRegExpRK11QMetaObjectP5QListIPvE" wurde in der DLL "QtCore4.dll" nicht gefunden.

Must I install Qt by hand and find a version that cooperates with kdiff3?

Discussion

  • Joachim Eibl

    Joachim Eibl - 2012-12-16

    Very odd.
    The dlls are part of the installation (see your installation directory e.g. c:\Program Files\KDiff3\bin).
    For such a obvious problem I would have expected more bug reports.
    Do you have a second PC to test?
    Can anyone else confirm this?
    Joachim

     
  • Joachim Eibl

    Joachim Eibl - 2012-12-16

    I just retested (on Win8, 64 bit)
    What Windows version are you using?

    You might want to try Dependency Walker
    (http://www.dependencywalker.com/depends22_x86.zip)
    to analyse the problem in detail. After starting it open the kdiff3.exe and click the QtCore4.dll. Lookout for error messages.
    If you also have 64-bit OS then use "C:\Program Files (x86)\KDiff3\kdiff3.exe".
    Joachim

     
  • SprinterSB

    SprinterSB - 2012-12-18

    Joachim Eibl schrieb:

    Very odd.
    The dlls are part of the installation (see your installation directory e.g. c:\Program Files\KDiff3\bin).

    I installed 0.9.97 atop 0.9.95 which is in a non-standard path, namely

    E:\KDiff3

    Is this a problem? Maybe its confused because the DLL is not ni the
    PATH? AKAIK MS Windows looks at the current directory (the one where
    the .exe resides) to find DLLs?

    For such a obvious problem I would have expected more bug reports.
    Do you have a second PC to test?

    No. Using depends complains about APPHELP.DLL alongside with

    Error: At least one module has an unresolved import due to a missing
    export function in an implicitly dependent module.
    Warning: At least one delay-load dependency module was not found.
    Error: At least one module has an unresolved import due to a missing
    export function in a delay-load dependent module.

    This is confusing because an update for a bugfix version (the major
    version (0) and the minor version (9) are the same) is not supposed to
    add new features or drag new libraries, does it?

    Johann

     
  • Joachim Eibl

    Joachim Eibl - 2012-12-18

    Depends also shows you which Qt-dlls are actually being loaded with KDiff3. (Have a look at the full paths. Perhaps these are other Qt-dlls instead of those shipped with KDiff3.)
    The different installation directory should be no problem. But KDiff3 now comes with a kdiff3.exe.manifest file to locate the Qt-dlls. You can try to delete this and move the dlls (QtCore4.dll, QtGui4.dll, libgcc_s_dw2-1.dll, mingwm10.dll) from the bin subdirectory into the same dir next to the kdiff3.exe.
    (Or just move the kdiff3.exe into the bin-dir. Whatever you prefer.)

    Another hint: The manifest system is often very capricious. If the modification time of the kdiff3.exe is older than of the kdiff3.exe.manifest then Windows often has a problem and can't load the program.

    Regarding the version numbering of KDiff3 - don't assume policies that other programs adhere to. Since quite a while I just increase the last (minor) position and add features nevertheless, but after 0.9.99 I will go to 1.0.0, and then - who knows I'll start off like Firefox only counting major numbers :-)

    Joachim

     
  • SprinterSB

    SprinterSB - 2012-12-19

    Joachim Eibl schrieb:

    Depends also shows you which Qt-dlls are actually being loaded
    with KDiff3. (Have a look at the full paths. Perhaps these are other
    Qt-dlls instead of those shipped with KDiff3.) The different

    Ah yes. Thanks for the pointer. The Qt stuff is dragged from mikTeX for
    some reason.

    installation directory should be no problem. But KDiff3 now comes
    with a kdiff3.exe.manifest file to locate the Qt-dlls. You can try to
    delete this and move the dlls (QtCore4.dll, QtGui4.dll,
    libgcc_s_dw2-1.dll, mingwm10.dll) from the bin subdirectory into the
    same dir next to the kdiff3.exe. (Or just move the kdiff3.exe into
    the bin-dir. Whatever you prefer.)

    The manifest machinery appears to be broken.

    Another hint: The manifest system is often very capricious. If the
    modification time of the kdiff3.exe is older than of the
    kdiff3.exe.manifest then Windows often has a problem and can't load
    the program.

    Touching manifest did not help.

    What works is moving the DLLs up. Moving kdiff3.exe down would imply
    that I adjust the registry, doesn't it? For example the "KDiff3"
    context menu in explorer would not find kdiff3.exe any more?

    Regarding the version numbering of KDiff3 - don't assume policies
    that other programs adhere to. Since quite a while I just increase
    the last (minor) position and add features nevertheless, but after
    0.9.99 I will go to 1.0.0, and then - who knows I'll start off like
    Firefox only counting major numbers :-)

    The Firefox versioning is scrap. If a software that is as complex as
    Firefox does not provide bug-fix releases, then that's a major loss of
    quality.

    Experience proves that you cannot have new features without new bugs.
    Thus, for critical and complex software, bug-fix releases are inevitable.

    I am contributing to GCC, and I guess nobody would accept GCC if there
    were no bug fixes without new features that introduce new bugs...

    If kdfiff3 suffers from a developer shortage it might be warranted not
    to support bug-fix only releases.

    Just to adhere to the Firefox version management and bug policy because
    Firefox is popular, is no argument that counts, IMHO.

    Johann

    p.s.: Depends still complains about the missing APPHELP.DLL but kdiff3
    appears to work.

    The dependencies are:

    • APPHELP.DLL
    • c:\winnt\system32\SHLWAPI.DLL
    • c:\winnt\system32\SHELL.DLL
    • e:\kfiff3\KDIFF3.EXE
     
  • Joachim Eibl

    Joachim Eibl - 2012-12-19

    I meant that the exe should be newer. Please "touch" kdiff3.exe.
    But could you please also test if it works if miktex is not in the path?

    Moving kdiff3.exe down would imply that I adjust the registry, doesn't it?

    Yes. This was not so good advice.

    Version numbering: Yes, developer shortage is a fact.

    Apphelp.dll: Some dlls are pulled in for all programs because they are explicitely listed in the registry. But apphelp.dll is not from KDiff3. (Seems to be from Microsoft if you search the net.)
    Joachim

     

    Last edit: Joachim Eibl 2012-12-19