0

I have 2 dlls impl1\A.dll and impl2\A.dll that (have the intent to) implement interface I for 2 different target environments. Lib files are stored in impl1\A.lib and impl2\A.lib respectively. I also have E.exe that uses interface I and that is compiled and linked against impl1\A.lib.

To run E.exe I copy E.exe and, depending on the target environment, either impl1\A.dll or impl2\A.dll to the target bin directory. E.exe will run successfully.

In above scenario I expect the 'dumpbin /exports' output for impl1\A.lib and impl2\A.lib to be the same. And this is indeed the case.

Statement 1: If 2 dlls implement the same interface then their dumpbin outputs are equal.

Statement 2: If 2 dlls have the same dumpbin outputs then these dlls implement the same interface.

Question: are above statements true?

  • 3
    No, you can tell what the function names are but not the parameter types (with a C interface) it maybe possible to unmangle C++ exports. – Richard Critten Aug 22 '16 at 09:59
  • A DLL's interface consists entirely of its exports. If dumpbin can show you all of a DLL's exports, then it can show you its entire interface. How can those statements *not* be true? You clearly seem to understand this, so what was the point of the question? Are you experiencing some issue, or is this purely philosophical? – Jonathon Reinhart Aug 22 '16 at 09:59
  • I suggest that use LoadLibrary rather than linked against lib. – neohope Aug 22 '16 at 12:41
  • I was in doubt of statement 2 for the reason mentioned by Richard Critten. – Peter Jaspers Aug 23 '16 at 08:34

0 Answers0