Информация об изменениях

Сообщение Re[9]: Новости C#13. params от 23.10.2024 4:47

Изменено 23.10.2024 4:53 Shmj

Re[9]: Новости C#13. params
Здравствуйте, Sinclair, Вы писали:

S>>А на моб. платформах он работал?

S>Если и не работал, то нерабочесть его была связана вовсе не с дотнетом. А как раз с кодом на C++

Смотря какой C++-код генерит — в этом вопрос.

Если на работало — значит C++ -код был завязан на POSIX или еще что, чего в моб. не было.

S>>Делал и не раз, причем не только h-only.

S>"не только", my ass.

Для доступа из других языков обязательно делать C-обертку. Но на .Net вы и этим не сможете проблему решить.

S>>>Я вам даже подскажу, в чём затруднения, которых вы не видите из-за своей зашоренности:

S>>Нужно только делать extern "C".
S>Я одного не могу понять — вы стебётесь или реально настолько некомпетентны?

S>Как по вашему, подойдёт вот такой библиотечный код для работы из любого языка?

S>
S>extern "C" Matrix<int> * create_matrix_int(int n, int m)
S>{
S>   return new Matrix<int>(n, m);
S>}
S>


В extern "C" нужно привести все к формату простого C. Шаблоны на верх не выдавать, вместо объектов, исключения перевести в коды ошибок — либо указатель голый либо даже хандлер.

Т.е. внешний API должен быть упрощенном виде и этого достаточно. А уже внутренне можете все фишки C++ -а юзать.

На C# вы этого под все 6 платформ сделать не сможете. Возможно что через платное решение за штуку баксов от www.remobjects.com — но это совсем другая история, я бы не рекомендовал.
Re[9]: Новости C#13. params
Здравствуйте, Sinclair, Вы писали:

S>>А на моб. платформах он работал?

S>Если и не работал, то нерабочесть его была связана вовсе не с дотнетом. А как раз с кодом на C++

Смотря какой C++-код генерит — в этом вопрос.

Если на работало — значит C++ -код был завязан на POSIX или еще что, чего в моб. не было.

S>>Делал и не раз, причем не только h-only.

S>"не только", my ass.

Для доступа из других языков обязательно делать C-обертку. Но на .Net вы и этим не сможете проблему решить.

S>>>Я вам даже подскажу, в чём затруднения, которых вы не видите из-за своей зашоренности:

S>>Нужно только делать extern "C".
S>Я одного не могу понять — вы стебётесь или реально настолько некомпетентны?

S>Как по вашему, подойдёт вот такой библиотечный код для работы из любого языка?

S>
S>extern "C" Matrix<int> * create_matrix_int(int n, int m)
S>{
S>   return new Matrix<int>(n, m);
S>}
S>


В extern "C" нужно привести все к формату простого C. Шаблоны на верх не выдавать, исключения перевести в коды ошибок, вместо объектов — либо указатель голый либо даже хандлер.

Т.е. внешний API должен быть упрощенном виде и этого достаточно. А уже внутренне можете все фишки C++ -а юзать.

На C# вы этого под все 6 платформ сделать не сможете. Возможно что через платное решение за штуку баксов от www.remobjects.com — но это совсем другая история, я бы не рекомендовал.