On 1/10/2014 13:04, Ross Finlayson wrote:
I'm not planning on making any non-standard, Windows-specific additions
to the code.

If you're immovable on that point, then someone needs to write a .def file for the DLL, which is *painful* for a large C++ library like live555: http://msdn.microsoft.com/en-us/library/d91k01sh.aspx

Other operating systems have managed to use the "LIVE555
Streaming Media" as dynamically-linked libraries in their applications -

Other linkers on other operating systems behave differently. No big revelation, that.

The Visual C++ linker will automatically do the right thing if you do something like this:

    // In a common header file somewhere
    #if MAKING_WINDOWS_DLL
    #  define EXPORT __declspec(dllexport)
    #elif _WIN32
    #  define EXPORT __declspec(dllimport)
    #else
    #  define EXPORT
    #endif

    // In a .h file for a procedural module:
    EXPORT void myfunction(...)...

    // In a .h file for an OO module:
    class EXPORT MyClass : public MyBase ...

The dllimport clause is necessary to allow the same set of headers to be used while building the DLL and for building *against* the DLL.

The final clause makes EXPORT a no-op on non-Windows systems.

You'd obviously need to add -DMAKING_WINDOWS_DLL to the Windows config file, or to the VC++ project files.

It is a lot of work to decorate all of the public symbols this way, but a lot less than to create a .def file.
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to