Обратите внимание, что по умолчанию Visual Studio не будет копировать исходный вывод в ту же папку, что и управляемый вывод.
вручную скопируйте исходный вывод в папку управляемой сборки и повторите попытку - если это ваша проблема, вам нужно изменить настройки сборки C ++, чтобы расположить папку назначения так же, как папка управляемого приложения.
Ваш код верен - до тех пор, пока макрос QUERYSEGMENTATION_API определен правильно, а ваша dll фактически построена как "MyApplication.dll"
Я бы вручную запустил исполняемый файл из файловой системы - убедившись, что последние exe и dll находятся в одной и той же папке, и в случае сбоя запустите зависящий от него файл.exe.