Не могу подобрать сигнатуру вызова для Link Zlib x64 VC9
От: Time Россия  
Дата: 22.08.10 17:25
Оценка:
Добрый день!
Использую Zlib (http://zlib.net/) под x86 в проекте (назовём XXX), среда разработки Visual Studio 9, язык C++ (VC9).
Zlib компилировался самостоятельно из исходников с помощью VC9.

Для примера будем использовать функцию inflateInit_ импортируемую из библиотеки Zlib

В проект использующий Zlib добавлены ссыки на lib файл, всё ок. С x86 проблем нет:
— в XXX объявлены Define: ZLIB_WINAPI, ZLIB_DLL
в lib файле Zlib экспортированны функции, например _inflateInit_@12, когда из проекта XXX убираешь ссылку на lib файл zlib, то выдаётся ошибка о то том что не найдена функция __imp_inflateInit_@12.
Т.е. как я понял VS сама добавляет __imp к именам фукнций импортируемым из lib.

Для x64!
Хотя, Zlib скомпилированна с теми же настройками, вроде, в lib файле имя экспортируемой функции выглядит, например, так: inflateInit_
теперь проект XXX при линковке выдаёт ошибку что не найдена функция __imp_inflateInit_ .

И ни как не могу эту ошибку устранить, вероятно в lib файле имя экспортируемой функции должно быть таким _inflateInit_


Заранее спасибо.
zlib calling conversions
Re: Не могу подобрать сигнатуру вызова для Link Zlib x64 VC9
От: c-smile Канада http://terrainformatica.com
Дата: 22.08.10 20:32
Оценка:
Здравствуйте, Time, Вы писали:

T>И ни как не могу эту ошибку устранить, вероятно в lib файле имя экспортируемой функции должно быть таким _inflateInit_


Аналогичная проблема в htmlayout 64-bit. Почему-то linker генерирует export lib без underscore в начале.

Причем если скажем htmlayout64.dll и exe его использующий части одного и того же solution то все собирается без ошибок.
Если компилировать раздельно — unresolved functions в 64.exe .
Re: Не могу подобрать сигнатуру вызова для Link Zlib x64 VC9
От: morm Россия  
Дата: 23.08.10 15:47
Оценка:
Здравствуйте, Time, Вы писали:

T>Добрый день!

T>Использую Zlib (http://zlib.net/) под x86 в проекте (назовём XXX), среда разработки Visual Studio 9, язык C++ (VC9).
T>Zlib компилировался самостоятельно из исходников с помощью VC9.

T>Для примера будем использовать функцию inflateInit_ импортируемую из библиотеки Zlib


T>В проект использующий Zlib добавлены ссыки на lib файл, всё ок. С x86 проблем нет:

T>- в XXX объявлены Define: ZLIB_WINAPI, ZLIB_DLL
T>в lib файле Zlib экспортированны функции, например _inflateInit_@12, когда из проекта XXX убираешь ссылку на lib файл zlib, то выдаётся ошибка о то том что не найдена функция __imp_inflateInit_@12.
T>Т.е. как я понял VS сама добавляет __imp к именам фукнций импортируемым из lib.

T>Для x64!

T>Хотя, Zlib скомпилированна с теми же настройками, вроде, в lib файле имя экспортируемой функции выглядит, например, так: inflateInit_
T>теперь проект XXX при линковке выдаёт ошибку что не найдена функция __imp_inflateInit_ .

T>И ни как не могу эту ошибку устранить, вероятно в lib файле имя экспортируемой функции должно быть таким _inflateInit_



T>Заранее спасибо.


Проверь с какой версией runtime library компилишься. (Project->Settings->C++->Code Generation)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.