Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > .NET для новичков > Вызов функций из dll для изменения компонентов |
Автор: kiler4747 1.6.2011, 22:06 | ||||
Написал программу для копирования папки на C#, а сейчас решил написать сами функции на C++(dll) и сделать многопоточной, но возникает ошибка входе в функцию из dll, проверял вызов функции в С++ - все нормально. Хочу запустить сначала фоновый поток для поиска количества файлов и увеличивать каждый раз maximum в progressBar(bar) и сразу запустить поток для копирования.
dll(C++)
Добавлено через 54 секунды Что неправильно? |
Автор: jonie 1.6.2011, 22:26 | ||||
давно ли CString стал мапиться на string из C# ? мапиться могут только относительно несложный типы, например const TCHAR*, CString тут не прокатит
а, если речь про MaxValueWchar - тогда она вообще из DLL нигде (по этому коду) не экспортируется.. да и называться она, скорее всего, будет _MaxValueWchar .. |
Автор: kiler4747 1.6.2011, 23:15 | ||
Согласен что CString несовместим с string(C#), поэтому и писал вторую функцию с wchar_t(C++ знаю не очень). MaxValueWchar, у меня в программе правильно написано, сюда не все скопировал. Когда и почему функции из dll надо вызывать с добавлением _ , раньше писал без _ и все работало, хотя когда спрашивал насчет вызова функций писали что скорее всего функция должна начинаться с _.
Ошибка возникает при входе в функцию из dll: File: f:\dd\vctools\vc7libs\ship\atlmfc\include\atlsimpstr.h Line: 393 Expression: (iChar >= 0) && (iChar <= GetLength()) |
Автор: kiler4747 3.6.2011, 17:01 | ||||
Разобрался почему не работали функции - не ту функцию вызывал. Но основная проблема осталась: Как из dll(C++) изменить в ProgressBar свойства Value и Maximum?
функции из dll(C++)
|
Автор: jonie 3.6.2011, 23:24 |
вам надо каллбэк. Я накатал пример (в аттаче) с вызовом калбэка. но использовать его надо крайне осторожно: я не весьма уверен что сам создаваемый делегат не надо сохранять в GC (есть такой метод GCHandle.Alloc - это надо изучать). |