|
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, 15:52 |
|
struct C++/CLI => C#
|
|||
---|---|---|---|
#18+
Основных способа два - формировать на C++ DLL с функциями и подключать через DllImportAttribute; формировать на С++ COM DLL и подключать как обычный reference с описанием интерфейсов на IDL. Lib'ы и т. д. .Net не поддерживает (хотя Mono их поддерживает). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2015, 16:23 |
|
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:35 |
|
struct C++/CLI => C#
|
|||
---|---|---|---|
#18+
Теперь понял, о чём речь. Если не путаю, нужно в C++ пометить __value (или что-то такое). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2015, 16:42 |
|
struct C++/CLI => C#
|
|||
---|---|---|---|
#18+
Ничего не нужно специально делать, никакого маршвллинга, в C++ объявить структуру и класс - managed в c# - просто референс на сборку ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2015, 16:43 |
|
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, 16:47 |
|
struct C++/CLI => C#
|
|||
---|---|---|---|
#18+
Изопропил, кажется - то, что надо. Типа враппер. Только подробнее бы. Как будет выглядеть функ. getMyStruct на стороне C++ И как к ней обратиться на стороне C#. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2015, 17:10 |
|
struct C++/CLI => C#
|
|||
---|---|---|---|
#18+
ppcatКак будет выглядеть функ. getMyStruct на стороне C++ как статический метод класса - в примере - tt() ppcatИ как к ней обратиться на стороне C#. как обычно, в примере будет Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2015, 17:21 |
|
|
start [/forum/topic.php?fid=20&msg=38884262&tid=1401890]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 378ms |
total: | 505ms |
0 / 0 |