Quiero hacer un C++ nativo, todo lo que se puede usar desde un proyecto de C#.C# llamando a C++ nativo todas las funciones: ¿qué tipos usar?
- Si quiero pasar una cadena de C# a la función en C++, ¿qué parámetro debo usar?
- Sé que las cadenas C# usan Unicode, así que probé wchar_t * para la función pero no funcionó; Intenté capturar cualquier excepción planteada desde la función llamada, pero no se lanzó ninguna excepción.
- También quiero devolver una cadena para que pueda probarla.
La función de C++ es el siguiente:
DECLDIR wchar_t * setText(wchar_t * allText) {
return allText;
}
El código C# es la siguiente:
[DllImport("firstDLL.Dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
public static extern string setText(string allText);
var allText= new string('c',4);
try {
var str1 = setText(allText);
}
catch (Exception ex) {
var str2 = ex.Message;
}
¿Qué tipo debo usar para el tipo de retorno de C++ de función, de modo que pueda llamarlo desde C# con un tipo de devolución de string[]
? la misma Q pero para que el parámetro de la función sea string [] en C#?
Por cierto, el uso de var como este pronto regresará para morderte cuando descubras que no tienes idea de qué tipo son tus variables. –
Tan pronto como compile estas 3 var (s) se convierten en una cadena. – ukhardy
@ukhardy oh vamos, lo sé! El punto es que cuando tienes var diseminado por todo tu código, y es más complejo que esto, encuentras que se convierte en un obstáculo para entender el código existente. –