Странную обнаружил фишку...

 

Пусть имеем глобальные переменные:

string gs_Str1 = "   ";

string gs_Str2 = "   ";

и такую вот импортируемую функцию:

int Function(string  gs_Str1, gs_Str2);

 

Вот эта функция в DLL:

int  Function(char*  gs_Str1, char*  gs_Str2);

не поверите, но оказывается  эти указатели указывают на одно и то же место, т.е.  gs_Str1 = gs_Str1 !

 

Но если в МТ4 имеем, к примеру:

string gs_Str1 = "                    ";

string gs_Str2 = "   "; 

 

то все нормально... 

 
more:

Пусть имеем глобальные переменные:

string gs_Str1 = "   ";

string gs_Str2 = "   ";

и такую вот импортируемую функцию:

int Function(string  gs_Str1, gs_Str2);

 

Вот эта функция в DLL:

int  Function(char*  gs_Str1, char*  gs_Str2);

не поверите, но оказывается  эти указатели указывают на одно и то же место, т.е.  gs_Str1 = gs_Str1 !

 

Но если в МТ4 имеем, к примеру:

string gs_Str1 = "                    ";

string gs_Str2 = "   "; 

 

то все нормально... 

 

 

Это известная багофича - результат работы оптимизатора кода при компиляции.

 
Чтобы указатели были разные надо инициализировать разными значениями.
 
Zhunko:
Чтобы указатели были разные надо инициализировать разными значениями.

понял уже, после того как день  потерял...