Добрый день,
Я работал над dll, который может использовать CORBA для связи с приложением, которое поддерживает сеть. Код работает нормально, если я запускаю его как консольное приложение C ++. Тем не менее, я застрял на экспорт методов как DLL. Методы, кажется, хорошо экспортируются, и если я вызываю метод без параметров, то он работает как положено. Я одержим передачей строки C # методу C ++.
Мой заголовок метода C ++ выглядит так:
bool __declspec(dllexport) SpiceStart(char* installPath)
Код импорта моей C # DLL выглядит следующим образом:
[DllImportAttribute("SchemSipc.dll", CharSet=CharSet.Ansi)]
private static extern bool SpiceStart(string installPath);
Я называю метод так:
bool success = SpiceStart(@"c:\sedatools");
При вызове SpiceStart генерируется исключение «PInvokeStackImbalance», которое «вероятно, потому что управляемая подпись PInvoke не соответствует неуправляемой целевой подписи.»
У кого-нибудь есть предложения? Если я уберу char * и строку из параметров, то метод будет работать нормально. Тем не менее, я хотел бы иметь возможность передать путь установки приложения в DLL из C #.
Заранее спасибо,
Giawa