Существует устаревшая C ++ DLL, созданная в Visual Studio 2015, и я работаю над тем, чтобы представить некоторые функции C ++ в качестве REST API. Для этого в том же решении создал проект веб-службы WCF и попытался вызвать функции C ++ через DllImport.
[DllImport("ExtOutPutGenerator.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern int CreateFrameGenerators(string node, string axis);
В коде C ++ вышеуказанная функция объявлена как,
extern "C" __declspec(dllexport) int CreateFrameGenerators(const char* node, const char* axis);
Теперь, когда я вызываю функцию C ++ через DllImport, она не работает.
То есть, когда я вызываю REST API через браузер, он выдает следующее сообщение.
The server encountered an error processing the request. See server logs for details.
Я точно знаю, что сбой происходит, когда он вызывает функцию C ++ изнутри C #. Не уверен, где найти журнал сервера.
Для целей тестирования я создал образец тестовой DLL-библиотеки C ++ в том же решении, а затем вызвал ее функцию через DllImport, и она работает нормально.
Таким образом, проблема, похоже, в устаревшей C ++ DLL.
Понятия не имею, что еще искать или как устранить неполадки.
Итак, мой вопрос,
В чем может быть проблема с устаревшей C ++ DLL, которая вызывает эту проблему? Какие-то конкретные настройки проекта?
Есть ли другой способ добиться этого без использования DllImport? Что-то более простое и понятное и может работать во всех проектах C ++?