My Oracle Support Banner

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

Last updated on SEPTEMBER 14, 2023

Applies to:

Oracle Tuxedo - Version 6.4 and later
Information in this document applies to any platform.
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

To view full details, sign in with your My Oracle Support account.

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


In this Document
Goal
Solution


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.