Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
"__stdcall" нужно ставить обязательно. Это без вариантов.
А чтобы компилятор не искажал имена функций нужно сделать такой def-файл:
И подключить его в опциях проекта:
Linker->Input->Module_Definition_File "MyDefFile.def"
Пробовал в VC++ директиву __cdecl . При таком объявлении функций
extern "C" double __declspec(dllexport) __cdecl GetDouble(double val)
extern "C" double __declspec(dllexport) __cdecl GetZero()
их экспортируемые имена не меняются. Однако, вызов GetZero срабатывает нормально, а GetDouble крашит и закрывает терминал. Проблема передачи параметров функции. Как решить проблему - не ясно.
И подключить его в опциях проекта:
Linker->Input->Module_Definition_File "MyDefFile.def"
Не вижу я этого в VC++ 2010
Не вижу я этого в VC++ 2010
Ну извини, у меня 2008 студия.
Попробуй просто включить файл в проект.
Не вижу я этого в VC++ 2010
Нашел. Вставил. DLL не компилируется
1>D:\Forex\TendAnalyzer\Debug\TendAnalyzer.lib : fatal error LNK1120: 1 неразрешенных внешних элементов
Наверное, как то по другому нужно его подключать.
Какое-то имя функции в def-файле не соответствует имени в cpp-файле.
УРА!
добавил в линкер в явном виде /DEF:"путь до .def файла" и все получилось! Имена не искажаются компилятором при экспорте и в терминале все работает!
Ko1dun, спасибо!
На здоровье.
УРА!
добавил в линкер в явном виде /DEF:"путь до .def файла" и все получилось! Имена не искажаются компилятором при экспорте и в терминале все работает!
Ko1dun, спасибо!
Окончательный вариант VC проекта можете выложить?
работает, потому что это единственно верное объявление. Соответственно, и вторая функция должна быть объявлена таким же образом.