Как избежать математической ошибки при использовании STD
Я отчаянно пытался получить доступ к DLL C++ из программы C# WinForms.
Проблема в том, что метод принимает char*, А C# не любит указатели.
Поэтому мне пришла в голову идея добавить обертку в мой C++, которая принимает строку.
Но как только я добавляю пространство имен std (непосредственно или с помощью) Я получаю ошибку, которая является проблемой
ошибка C2061: синтаксическая ошибка: идентификатор 'acosf'
Я не использую математический код в своей программе. Так что, похоже, я привожу математический код, даже если я не использую пространство имен в целом.
Что я могу сделать?
Что я уже пробовал:
#include <string> using namespace std; int keycompy(string s1, string s2) { //stuff }
также пробовать
#include <string> int keycompy(std::string s1, std::string s2) { //stuff }
Richard MacCutchan
Где происходит ошибка?
TaSwavoDB
Когда я компилирую (или раньше), это происходит в CMATH на линии
использование _CSTD acosf; использование _CSTD asinf;
это начало 102 ошибок - все в CMATH и все аналогичного характера
*edit* должен ли я рассматривать строку раньше (в CMATH)
#if _GLOBAL_USING && !defined(RC_INVOKED)
а может быть, не определить _GLOBAL_USING в моем коде? Или это повлияет на то, что я хочу?
***изменил имя на TaSwavoDB, поскольку член 12032062 казался безличным и предоставлялся системой... имя Дейв
Richard MacCutchan
Я только что скомпилировал этот код и не получаю ошибки. Должно быть, что-то другое вызывает его, что вы не показываете.
TaSwavoDB
Вау - это отличная (но разочаровывающая по-другому) новость.
Спасибо, Ричард.
Поскольку я нахожусь в крайнем сроке, на самом деле быстрее преобразовать ту часть библиотеки DLL C++, которая мне нужна, в C#, а не прокладывать маршрут через все это (это большая библиотека, и мне нужны только две ее части).
Большое спасибо за вашу помощь.
Я напишу здесь, если узнаю причину позже - вы спасли меня, по крайней мере, на неделю или две.