Re: How to check dll version?
"bucher" wrote:
[...]
Now, if in main application, I only need to create an
interface for every dll. I don't have to write bunch of
"GetProcAddess". If I want to add more export functions, I
should update the interface class. What I worried about is
if I use the old dll, main application will not report any
errors when call "CreateInstance". It will report an error
when I call the new function. Is there any method to check
whether the dll is consistent with the interface file?
I should warn you that exporting classes from DLL, besides
the advantages you mentiond, has following drawbacks:
1. Both DLL and its client must use C++.
2. Both DLL and its client must use the same version of the
compiler in order to be compatible. There is no binary
compatibility for C++ code.
Regarding your versioning problem there is no ultimate
solution. Usually, once interface is published, it cannot
change (like in COM). Interface is a contract that you
cannot breach unilaterally. If you need to add new methods,
then make new interface. For example,
class IHardwareInterface2
{
// all methods from IHardwareInterface
...
// new methods
virtual DWORD NewMethod() = 0;
...
};
So, old clients will continue to use `IHardwareInterface'
while new clients will be aware of new functionality and use
new interfaces.
Alex