Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с линкованием библиотеки, собранной с помощью VS к драйверу.  (Прочитано 7835 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
remedius
Гость
« : 28-04-2006 11:18 » 

Здравствуйте! Я пишу user mode драйвер. По идеи использовать внешние библиотеки можно. Но компилятор DDK сделать это не позволяет. Кто-нибудь пробовал использовать внешние бибилотеки?

Моя библиотека экспортирует одну функцию:

#ifdef __cplusplus
extern "C" {
#endif

#pragma once
#ifdef WIN_EXPORTSN
#define WIN_API __declspec(dllexport)
#else
#define WIN_API __declspec(dllimport)
#endif

WIN_API void CreateRasterFile (const char *, const char *);

#ifdef __cplusplus
}
#endif

Импортирую я следующим образом:
__declspec(dllimport) void CreateRasterFile (const char *, const char *);

В файле src драйвера я прописываю так:
TARGETLIBS= ..\AXACAC.lib

Линкер  DDK выдает следующее :
error LNK2019: unresolved external symbol __imp__CreateRasterFile@8
referenced in function _OEMSendPage@4
..\..\i386\VPrinter.dll : fatal error LNK1120: 1 unresolved externals

Библиотека собрана по соглашению __stdcall ( то что и DDK юзает

Помогите пожалуйста, совсем уже не знаю что делать.... Не понял 
« Последнее редактирование: 28-04-2006 11:22 от remedius » Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 28-04-2006 20:40 » 

Ты не пробовал прописать полный путь? Например так:
Код:
TARGETLIBS=$(DDKROOT)\libchk\i386\ntvdm.lib

У меня все связывалось, там вообще три библиотеки использовалось и они не менее внешние чем любые другие...

Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
remedius
Гость
« Ответ #2 : 29-04-2006 05:48 » 

Ну никак не получается. даже если прописать полный путь. Может что не так в объявлениях? Помоги пожалуйста, если ты делал когда-нить. Давно уже борюсь с этой проблемой. Я так понимаю ты тоже делал Dyn linked library и прописывал lib? Я делала  с помощью VS 2003,  а ты? может там нужно прописать какие-нибуть флаги? в общем если не сложно можешь прислать пример проекта на студии, который генерит dyn linked library? (если не очень хочется разбираться с этим). Я тогда смогу сравнить, что не так... Не понял
Спасибо
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 01-05-2006 17:32 » 

Вообще, я делал kernel mode драйвер и проект, если честно, делал визардом от Driver Studio, а потом переводил его из формата 6-й студии в седьмую. Но для компиляции я писал SOURCES, в котором и прописывал библиотеки и все подобное...

Если ты все равно пользуешься компилятором от Visual Studio, то можно скопировать либу в папку проекта и включить ее принудительно прагмой. Это делается так:
Код:
#pragma comment(lib, "YourLibName.lib")

Ну или можно прописать полный путь до либы и не копировать ее в папку проекта. Как правило этот способ помогает, но компилировать надо студией.

Если не поможет, напиши подробнее, чем собираешь проект... Если build от DDK, то SOURCES прикрепи или присылай и информацию, которую build выдает.
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
remedius
Гость
« Ответ #4 : 01-05-2006 17:48 » 

Привет!
Пользуюсья студией для собирания только билиотеки.
А драйвер я собираю build DDK, в source файле я в прописываю свою библиотеку собранную в студии- смотри первый пост - там все написано: и что компилятор DDK выдает и как я прописыаю в соурс файле. Все это я думаю из-за студии, т.к. если эту библиотеку потом подключить к другому проекту студийному, то все ok. Или наоборот,если собрать не студией а DDK эту библиотек, то она тоже слинкуется с драйвером. Да, пишут кстати, что можно подключить, но у меня ну никак не получается Жаль(Полный путь тоже не помогает
(кстати будеш в асе стучись -  быстрей разбиремся ,если хочешь помочь
Спасибо
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 01-05-2006 18:46 » 

Цепляй либу к сообщению, посмотрим, что там. Просто сложно настройками проекта dll сделать так, чтобы она не подключалась.

Ну соглашение о вызовах можно перепутать, но ты пишешь, что с ним все нормально... У меня такие штуки были, когда в имени функции при ее объявлении или определении закрадывалась ошибка. Так что проверь spelling для этой функции в проекте библиотеки.

Ну или давай сигнатуру функции; вкупе с прицепленной либой можно будет разобраться. Ну на крайний случай стучись ко мне в аську самостоятельно Улыбаюсь
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines