Отладка функции c ++ из c # не работает для строкового параметра - PullRequest
0 голосов
/ 21 октября 2019

У меня есть простое консольное приложение на c #, которое вызывает функции из c ++ - dll. Для функций с нулевым или целочисленным параметром (Create3DJSon2 и Create3DJSon3 - см. Ниже) я могу выполнить отладку в коде c ++ - т. Е. Кнопка «step into» переходит в код c ++. Для функции со строковым параметром (Create3DJSon1 ниже) я не могу войти в функцию при отладке. Отладчик просто переходит на следующую строку в коде c #. Я использую VS2017 (15.9.17). Параметр «Включить отладку собственного кода» включен. C ++ и C # компилируются в режиме отладки. Я играл с параметрами DLLImport, но безуспешно. Заранее спасибо за предложения!

c ++ dll:

namespace BL
{

  extern "C"  __declspec(dllexport) void __stdcall Create3DJSon1(const char* jsonScript)
  {
  }

  extern "C"  __declspec(dllexport) void __stdcall Create3DJSon2()
  {
  }

  extern "C"  __declspec(dllexport) void __stdcall Create3DJSon3(int i)
  {
  }

}

c # -app:

class Program
{
    static void Main(string[] args)
    {
        Create3DJSon1("Hallo");    //debugging does not work
        Create3DJSon2();           //debugging works
        Create3DJSon3(4);          //debugging works
    }


    [DllImport("bl_tools_debug.dll", CallingConvention = CallingConvention.StdCall)]
    public static extern void Create3DJSon1(string jsonScript);

    [DllImport("bl_tools_debug.dll", CallingConvention = CallingConvention.StdCall)]
    public static extern void Create3DJSon2();

    [DllImport("bl_tools_debug.dll", CallingConvention = CallingConvention.StdCall)]
    public static extern void Create3DJSon3(int i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...