There is something very screwy going on. I found an error in my release
mode build. I said
_SECURE_SCL_THROWS=1
_SECURE_SCL=1
which I am not supposed to do in release mode. I removed this and rebuilt.
The error mutated slightly but is still there. This shows that the problem
is to do with my build. But I would still appreciate any help/insight.
I am wondering if I need to remove those macros from the build of the APR
components. I thought the APR was all coded in C, so how could this make
any difference? Not sure. All opinions welcome.
Another thing - the size of the release mode library is HUGE: 636 MB, as
opposed to 155 MB in Debug mode. Why is there such a huge difference? And
why this way around. I would be grateful if anyone would report on how big
their debug and release libraries are. Checking some file sizes I see that
the object code files in the Release directory are huge. The largest
object file in debug mode is 928 KB. In Release mode the largest object
file (for a different source file as it happens) is 2228 KB.
Yet one more thing: I can run nm on the debug lib under cygwin and all is
well. Running nm on the one built in release mode gives lots of warnings
about bad object code. The symbols are produced but those warning are very
worrying. The message says: File format not recognised. Doing an nm on an
individual object file gives: File truncated.
Regards,
Andrew Marlow
Internet
tabish121@gmail.com
05/07/2010 16:30
Please respond to
users@activemq.apache.org
To
users@activemq.apache.org
cc
Subject
Re: activemq-cpp problems with VS 2005 in Release mode
On Mon, 2010-07-05 at 16:07 +0100, andrew.marlow@uk.bnpparibas.com
wrote:
> I have built version 3.2.1 of amq-cpp and have a serious problem when
> using release mode. Debug mode is just fine.
>
> I have built apr, apr-iconv, apr-util and expat from source.
>
> I have added the following macros to all builds:
>
> WIN32
> _WINDOWS
> NOMINMAX
> _SECURE_SCL_THROWS=1
> _SECURE_SCL=1
> _CRT_SECURE_NO_DEPRECATE
> _CRT_NONSTDC_NO_DEPRECATE
> _MBCS
> _VC80_UPGRADE=0x0600
>
> I have built the cpp example that comes with amq-cpp. This works fine in
> release mode.
>
> When my app starts up it blows up with:
>
> invalid map/set<T> argument.
>
> Any idea what this means? It blows up before it even enters any amq-cpp
> code. But the problem only happens when linking with amq-cpp and only in
> release mode.
>
> I am on Windows-XP (SP3) using VS 2005 (SP2).
>
> Regards,
>
> Andrew Marlow
You should ensure that you are building your app using the correct
runtime library, the amqcpp library requires the multithreaded dll
version of the runtime. Or check that you aren't linking the debug
version of the amqcpp library with your release build.
Regards
--
Tim Bish
Open Source Integration: http://fusesource.com
ActiveMQ in Action: http://www.manning.com/snyder/
Follow me on Twitter: http://twitter.com/tabish121
My Blog: http://timbish.blogspot.com/
___________________________________________________________
This e-mail may contain confidential and/or privileged information. If you are not the intended
recipient (or have received this e-mail in error) please notify the sender immediately and
delete this e-mail. Any unauthorised copying, disclosure or distribution of the material in
this e-mail is prohibited.
Please refer to http://www.bnpparibas.co.uk/en/information/legal_information.asp?Code=ECAS-845C5H
for additional disclosures.
|