TUX - Problem to support .NET C++ compiler (Doc ID 775158.1)

Last updated on NOVEMBER 04, 2016

Applies to:

Oracle Tuxedo / Tuxedo / all
Information in this document applies to any platform

Goal

DESCRIPTION:
If a Tuxedo application server is built using .NET C++ (vc7.0) compiler, the application can not use
stdin/stdout/stderr, all the messages written to them are lost.

The issue is a simple one of a mixing of the versions of the C-Runtime. The BEA library is linked with the 6.0 Version
of the C-Runtime (MSVCRT.DLL) and the application server binary is linked with the 7.1 version of the C-Runtime
(MSVCR71.DLL). Both of these DLLs have their own global variables and heap. Among these global variables are stderr,
stdout, and stdin.  Conflict between stdin/stdout/stderr loaded from different C-Runtime that exist in different heap
could cause unexpected behaviors.

This  problem does not happen when mixing VC 5 and VC 6 because the name of the C-Runtime stayed the same and only one
copy got loaded. This, however, caused a whole host of other issues, according to Microsoft support, and for that
reason they decided to move to naming the C-Runtime with the version number and that is the way that it will be from
here on out.  Microsoft does not guarantees that the 6.0 and 7.x CRT are binary compatible.

Solution

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms