Re: Using gtkmm with Visual C++ and _SECURE_SCL=0



On Mon, 2008-10-20 at 11:11 +0200, Thomas Frank wrote:
> Hallo Armin.
> 
> Thanks a lot for your response.
> 
> 1. In Visual-C++ the _SECURE_SCL-flag enables some special security
> checks within the STL-Container-templates. This means among others
> that the base-classes for all iterators get an additional member, a
> pointer to the referenced container. This pointer in turn is used to
> make additional runtime-checks, if an iterator is actually pointing
> into the container it is used with. To my opinion this is quite useful
> in debug-mode, but for release-versions, these checks can easily slow
> down the performance of programs by 10-20% and more, depending on the
> algorithms used. Since _SECURE_SCL=0 removes the additional
> pointer-member from the iterators, the binary-compatiblility with
> libraries in 'secure-mode' is broken. Anyway. MS has decided to make
> _SECURE_SCL=1 the default, for both release- and debug-mode. Which
> leads me to...
> 
> 2. I totally agree with pre-built libraries compiled with the
> default-settings of a compiler. I did not really expect an additional
> customized build for my purposes. That's why  I asked for a known
> workaround. It could be that sigc++ is the only source of problems,
> since it exchanges iterators in its interface (signal::connect()). If
> so, I would mail to their list, but I do not really know if there is
> other items somewhere in the libraries that are also affected and I
> cannot double-check the complete code...
> 
> 3. I found the instructions on
> http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm . But I would
> rather like to rebuild exactly the libs and dlls, that come with the
> installer-packages. Where can I find out, which packages of libsigc++,
> glibmm, cairomm, pangomm and gtkmm were exactly used for the
> installers?

The DLLs have a version resource that shows the Version in the Windows
explorer when viewing the DLLs, or by choosing Properties on a DLL. The
only exception to this is libsigc++ which has been built from SVN since
there was no release with updated MSVC project files when the latest
installer was built.

>  The idea is, if I rebuild exactly the same versions, I could just
> exchange the release-libs and -dlls of the standard gtkmm-installation
> and are finished.


>  Maybe there is even a complete VisualC++-Workspace (sln) for all C
> ++-libraries at once, that could be released along with the
> installers?

There is no such solution yet, but I think this is a good idea. The only
problem that I see is that this solution file needs to know the path to
the libsigc++, glibmm, cairomm etc. source code, even if we ship it with
gtkmm. 

>  Any aid in building a 'patch' for the installers would be welcome.

The installer sources are in gtkmm SVN in the win32_installer directory.
Adding a file that the installer is supposed to install is easy (if this
is what you are looking for), just look how it's done for the existing
files in gtkmm-installer.nsi.in, and remember to also add it to the
uninstaller.

> regards
> Thomas

Armin



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]