On 19/07/2013 00:30, Incongruous ...
wrote:
A few things spring to mind. Firstly, I'll assume that you're linking to libsigc++ which is in a separate DLL. Have you built all three components with the same compiler (i.e. your app, gtkmm and sigc++)? In other words, you're not building (say) gtkmm and your app with VS2012 but then trying to link to sigc++ built with VS2010. Whether you have or you haven't, the following paragraph will almost certainly explain your problem:- All 3 projects MUST have compatible compiler settings. An encoding like std@@AEBVslot_base 2@@Z can get subtlely changed by incompatible build settings. Examine your sigc++ dll in a hex editor. I'll bet that you can't find an instance of 'slot_base' with precisely that signature. There'll be something similar but not exactly the same. That's a pretty good indicator that you've got mismatched build settings. In fact, even your preprocessor directives can be important here. I remember getting the same problem once by using a particular preprocessor directive in my app but not setting it the same in my DLL. I can't remember precisely which directive it was but I think it was either _SECURE_SCL or HAS_ITERATOR_DEBUGGING. You can't have them turned on in one module and turned off in another. If that doesn't help either, it's possible (though very unlikely) that you're trying to export an uninstantiated STL class from your DLL. This KB article describes the problem but I don't think it'll be relevant in your case. http://support.microsoft.com/kb/168958 Good luck with it.! John |