What I am trying to achieve: I am trying to access a C++ application's functions through its DLL in a C# (Interop).
Issue which I am facing right now: When i create a std::string return type function in C++ and calls it through its DLL in C# code there is now output at all.
Code which I have written for C++ APP
extern "C"
{
    __declspec(dllexport) int SM_Interop_API_Add(int a, int b)
    {
        return a + b;
    }
    __declspec(dllexport) std::string SM_Interop_API_getLanguage()
    {
        return "This is Test String";
        //return getLanguage();
    }
}
Code which I have written for C# APP
    class Program
    {
        [DllImport(@"CPPSample.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi,EntryPoint = "SM_Interop_API_Add")]
        public static extern int SM_Interop_API_Add(int a, int b);
        [DllImport(@"CPPSample.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi, EntryPoint = "SM_Interop_API_getLanguage")]
        public static extern string SM_Interop_API_getLanguage();
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            int sum = SM_Interop_API_Add(10, 10);
            Console.WriteLine($"Result: {sum}");
            string result = SM_Interop_API_getLanguage();
            Console.WriteLine($"Sm Language: {result}");
            Console.WriteLine("----EOP----");
        }
    }
In the above code for C++, SM_Interop_API_getLanguage is supposed to return a string, and when I calls it through its DLL in C# code it does not return any result at all, first, I tried by returning the actual output of getLanguage which did not work then I tried to return some hard codded string but that is also coming as output. Also to mention the function with int return type works perfectly only std::string return type is not working here in my case.
Kindly guide me if I am doing anything wrong or missing anything. Any help is appreciated.