Интеграция приложений, разработанных в разных версиях VS - PullRequest
0 голосов
/ 18 марта 2019

В настоящее время передо мной стоит задача интегрировать IMU, API которого разработан с использованием Visual Studios 2015, с программным обеспечением для интеграции, API которого совместим только с Visual Studios 2010. Я уже пытался адаптировать API IMU для VS2010, но это оказалось слишком сложным и утомительным. Это не выполнимо в разумные сроки.

Решением, о котором я подумал, было реализовать класс в VS2015 (назовем его BridgeClass), который считывал бы нужные данные из IMU, используя простую структуру. Это будет реализовано как dll, и я могу связать его с программным обеспечением для интеграции в VS2010.

Тем не менее, часть, которая неясна, состоит в том, как я могу держать две библиотеки отделенными друг от друга, чтобы VS2010 никогда не «видел» ничего из VS2015, которое его расстраивает. Возможно ли это с помощью dll? Мне нужно будет связать библиотеку IMU с BridgeClass (например, чтобы открыть порт и прочитать данные из IMU), будет ли это, в свою очередь, связано с программным обеспечением интеграции и в конечном итоге будет таким же, как и прямая интеграция IMU

Я был бы очень полезен, если бы кто-то мог дать мне некоторую информацию об этом или указать мне некоторые полезные ссылки. Спасибо!

1 Ответ

0 голосов
/ 18 марта 2019

Пока API вашей DLL не использует ни одной из стандартных библиотек, и никакие исключения не выходят за границы DLL, это должно работать в смешанных версиях Visual Studio.

Вместо этого вам нужно использовать char*std::string.Нет std::vector, std::shared_ptr, std::unique_ptr и т. Д.

Еще одна вещь, о которой вы должны быть осторожны, это то, что все, что размещено в DLL, должно быть освобождено внутри DLL, обычно это делается с помощью acфабричная функция и функция деструктора переменного тока, которую ваше приложение может вызывать для создания и уничтожения объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...