Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
19.02.2015, 15:52
|
|||
---|---|---|---|
|
|||
struct C++/CLI => C# |
|||
#18+
Добрый. Бьюсь над проблемкой. Нужно передать структуру из C++/CLI в C#. В одном солюшене есть 2 проекта C# и C++/CLI. В C# проекте вызовом SomeCppClass.getA() (или так: SomeCppClass.getA(ref A), все равно) нужно получить структуру. === С++/CLI === public struct A{ public: double l; doublr r; } === C# === public struct{ public double l; public double r; } A a = SomeCppClass.getA(); Есть много примеров, как из DLL ф-и вызывать, типа: [DllImport("mydll.dll")] static extern int (ref MathInputStructType input,... Хочу подчеркнуть, нет никакой DLL, есть C++/CLI ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2015, 16:23
|
|||
---|---|---|---|
struct C++/CLI => C# |
|||
#18+
Основных способа два - формировать на C++ DLL с функциями и подключать через DllImportAttribute; формировать на С++ COM DLL и подключать как обычный reference с описанием интерфейсов на IDL. Lib'ы и т. д. .Net не поддерживает (хотя Mono их поддерживает). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2015, 16:35
|
|||
---|---|---|---|
|
|||
struct C++/CLI => C# |
|||
#18+
Но со строками подобное прокатывает. === C++/CLI === bool LoadMedia(String^ value) { System::IntPtr name = Marshal::StringToHGlobalAnsi(value); const char* ccName = (const char*)(void*)name; libvlc_media_t* media = libvlc_media_new_path(vlcInstance, ccName); Marshal::FreeHGlobal(name); } === C# === player.LoadMedia(name); Это код работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2015, 16:42
|
|||
---|---|---|---|
struct C++/CLI => C# |
|||
#18+
Теперь понял, о чём речь. Если не путаю, нужно в C++ пометить __value (или что-то такое). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2015, 16:43
|
|||
---|---|---|---|
struct C++/CLI => C# |
|||
#18+
Ничего не нужно специально делать, никакого маршвллинга, в C++ объявить структуру и класс - managed в c# - просто референс на сборку ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2015, 16:47
|
|||
---|---|---|---|
struct C++/CLI => C# |
|||
#18+
примерно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2015, 17:10
|
|||
---|---|---|---|
|
|||
struct C++/CLI => C# |
|||
#18+
Изопропил, кажется - то, что надо. Типа враппер. Только подробнее бы. Как будет выглядеть функ. getMyStruct на стороне C++ И как к ней обратиться на стороне C#. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2015, 17:21
|
|||
---|---|---|---|
struct C++/CLI => C# |
|||
#18+
ppcatКак будет выглядеть функ. getMyStruct на стороне C++ как статический метод класса - в примере - tt() ppcatИ как к ней обратиться на стороне C#. как обычно, в примере будет Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&tablet=1&tid=1401890]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
191ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 298ms |
0 / 0 |