Как уже упоминалось. если C++ не является частью одного и того же адресного пространства (тот же запущенный процесс или «exe»), вам нужно будет перенести данные из одного процесса в другой. Обычно это называется Inter Process Communication (IPC) и может выполняться многими способами. Для этого существуют целые рамки.
Если ваше приложение на C++ - это .Net-процесс, вы можете попробовать удалиться. Самый простой способ - создать сборку, которая разделена между двумя процессами и может связываться через .net-перемычку по именованным каналам или TCP или независимо от того, что вы предпочитаете. Ive делал это много раз, и в то время как у него есть свои недостатки, его работоспособность.
Если ваше приложение на C++ не является .Net, вы, вероятно, застреваете в создании своего рода протокола и маршалируете данные между этими двумя процессами. Альтернативно, если вы просто пытаетесь использовать библиотеку C++ в приложении .net, вы можете попробовать создать сборку C++ .Net (что MS вызывает IJW). Его немного сложно настроить, но работает довольно хорошо. Преимущество в том, что вы можете объединить данные так же легко, как вызвать функцию в своем основном приложении. Самым большим недостатком является то, что сборки C++ не поддерживают «CPU any», поэтому любое приложение, ссылающееся на вашу сборку C++, должно соответствовать его 32 или 63-битной сборке.
Это может работать, только если ваша dll vb.net находится в том же процессе **, что и ваш C++ exe. Это так? – sashoalm
Если VBNet DLL находится в том же адресном пространстве процесса, зачем вам отправлять его по именованному каналу, просто отправьте адрес функции. И, если он находится в адресном пространстве _different_, что именно вы думаете, что сможете сделать с указателем (кроме его печати)? Вы, конечно, не сможете использовать его для получения базовых данных в адресном пространстве C++. – paxdiablo
Это место в другом месте. Считаете ли вы, что лучше отправить как безопасный массив, то есть то, что на самом деле в этом указателе является структурой. Тогда вы можете рассказать мне, как я могу отнести его в разных случаях к разным структурам в dll vb.net – goldenptr