Эта ссылка на MSDN почти наверняка поможет.
Поскольку вы говорите, что это не стандартные функции C / C ++, вы можете игнорировать разделы о смешивании кода отладки и выпуска. К сожалению, это все еще оставляет вам множество возможных причин. Это один из правил, который стоит исключить.
Эта ошибка может возникнуть, если при использовании параметра / clr вы используете библиотеки stati c и dynamici c.
Если вы просматриваете параметры командной строки во время компиляции, либо включив подробный режим , либо изучив свойства каждого файла.
Как только это будет определено все остальные причины в том, что вы буквально объявляете одну и ту же вещь (функцию / переменную) дважды. Наиболее вероятный способ для этого - поместить что-то (например, функцию) в заголовочный файл, который включен более чем в один файл модуля. Диагностировать это, не видя код, сложно. Вы должны выбрать одну из ошибок и выбрать часть имени, которая не является искаженной , в основном читаемым человеком битом. Затем вам нужно проверить, где он объявлен, и посмотреть, есть ли в заголовке. Если это не так, вы должны включить не заголовок из исходного файла. Быстрый (и грязный) способ выяснить, откуда включается файл, - добавить в файл сообщение # pragma , а затем перекомпилировать по одному файлу за раз, чтобы увидеть, когда он будет напечатан. Чтобы понять, почему он включен, используйте show include .
Если символ объявлен из файла заголовка, вы должны исправить его, сделав forward forward . Если вы не знаете, как это сделать, я бы предложил начать новый вопрос в духе «как мне это объявить?». Это должно дать вам ответы довольно быстро.
Надеюсь, это поможет.