У меня есть метод C++ plus, который генерирует значение. Я вызываю этот метод из приложения C#.
метод C++, как это:знак * в управляемом коде?
extern "C" REGISTRATION_API char * generate(char dIn[],char dOut[])
Метод generate
возвращает массив символов (sOut[]=returnvalue; return sOut;
)
Теперь я звоню этот метод из моего C# приложения:
[DllImport("mydll.dll")]
static extern string generate(string sIn, string sOut);
Как вы можете видеть, тип возврата в C# равен string
. Случается, что возвращаемое значение в C# неверно и оно повреждено. (Значение правильно внутри метода generate
, но всякий раз, когда я называю это из C#, чтобы извлечь его, я получаю некоторые ошибочные значения.)
Это нормально, что мой метод в C# имеет string
возвращаемое значение в то время как в C++ это char*
? Пожалуйста, поделитесь своими комментариями, это срочно, спасибо.
Действительно ли вы 'char *' представляют строку (ANSI/Unicode?) Или последовательность байтов? Если строка, используйте StringBuilder, иначе байт [] в декларации 'static extern'. – dtb