When I point to my C++ dll from DependencyWalker, I see the error message "At least one module has an unresolved import due to a missing export function in an implicitly dependent module"
Can you please suggest what the error is?
When I point to my C++ dll from DependencyWalker, I see the error message "At least one module has an unresolved import due to a missing export function in an implicitly dependent module"
Can you please suggest what the error is?
Your dll (or a dll that it imports) has an import from another dll (bad.dll
say). When DependencyWalker scans bad.dll
it finds that it does not export the required function. This missing export will be labelled in red (or somesuch) in your dll's import list.
To discuss further @bobbogo's answer, you need to have the exact same symbol in the child library as the one needed by the first library.
For example I had a problem because opencv_highgui455.dll
needed the function QTest::keyToAscii, found in Qt.
QtTest6.dll
had the correct function in it, but not the exact same symbol, because this version of Qt was compiled with mingw and opencv was compiled with Visual Studio. Thus the dll could not share their symbols and understand each other.
You can see this either by doing:
strings "[opencv4.5.5]\x64\vc16\bin\opencv_highgui455.dll" | grep keyToAscii
# returns ?keyToAscii@QTest@@YADW4Key@Qt@@@Z
strings "[qt6]/msvc2019_64/Qt6Test.dll" | grep keyToAscii
# returns ?keyToAscii@QTest@@YADW4Key@Qt@@@Z
strings "[qt6]/mingw_64/Qt6Test.dll" | grep keyToAscii
# returns _ZN5QTest10keyToAsciiEN2Qt3KeyE
or you can directly see that in Dependencies (note the red card or the green card, and the Demangler):