Я не могу скопировать и вставить код здесь, но я попытаюсь объяснить снова.
Я не могу использовать маршалинг в секции управляемого c ++, потому что я не вызываю функцию, а передаю делегат c # для обратного вызова.
В неуправляемой dll у меня есть обратный вызов, который требует такой функции: void Func(unsigned int, int, std:string &)
.
Моя цель - передать делегат c # из моей программы этому обратному вызову, поэтому в неуправляемом коде
Я сделал делегат, подобный этому: delegate void DEL(unsigned int a, int b, String ^ c)
и функцию, подобную: void mFunc(DEL ^ del)
, и этот маршал функции передает делегат в cb, который принимает неуправляемая функция подписки обратного вызова. Без знака int и int работают нормально, но строка всегда ""
, когда срабатывает функция C #.