Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не подключить библиотеку, ссылка на неразрешенный внешний символ 
V
    Опции темы
Pro100MoNEy
Дата 30.1.2012, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2010

Репутация: нет
Всего: нет



Скачал драйвер и библиотеки для работы с lpt под семеркой x64 создал проект консольный в Visual Studio в линковшике добавил либы, хидеры подключил, пытаюсь вызвать функцию из хидера библиотечного пишет ошибку 
Цитата

....obj : error LNK2019: ссылка на неразрешенный внешний символ "int __stdcall InitializeOls(void)" (?InitializeOls@@YGHXZ) в функции _main



Второй день сижу все библиотеки что качал такое выдают, скажите пожалуйста что хочет от меня студия почему коверкает имена функций, пробовал даже через #pragma comment (lib, "WinRing0x64.lib") нифига непомогает.
PM MAIL   Вверх
volatile
Дата 30.1.2012, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(Pro100MoNEy @  30.1.2012,  22:34 Найти цитируемый пост)
"(?InitializeOls@@YGHXZ) в функции _main


А вы уверены что имена заманглены в либе, также как и ваши?
Скорей всего нет, то есть нужно писать:
extern "C"

читайте документацию драйвера.


PM MAIL   Вверх
Pro100MoNEy
Дата 31.1.2012, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2010

Репутация: нет
Всего: нет



Читал имена не мои все взято из архива с драйвером, в документации написано подключить либу и хидер.


Попробовал extern "C"
Цитата

 error LNK2001: неразрешенный внешний символ "_InitializeOls@0"


Прикрепил архив с библиотекой

Это сообщение отредактировал(а) Pro100MoNEy - 31.1.2012, 01:27

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  WinRing0.7z 89,28 Kb
PM MAIL   Вверх
Pro100MoNEy
Дата 31.1.2012, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2010

Репутация: нет
Всего: нет



Вопрос, что именно делает такая строка почему 2 типа void и _stdcall?
Цитата

 typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum); 


И почему DevC++  нормально ее хавает а  студия ругаеться на _stdcall 
Цитата

использование вложенного оператора обьявления после соглашения о вызовах недопускаеться

PM MAIL   Вверх
Pro100MoNEy
Дата 31.1.2012, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2010

Репутация: нет
Всего: нет



Пытаюсь подгрузить длл вручную но Loadlibary ненаходит длл
код
Цитата

#include "stdafx.h"
#include <windows.h>
#include <conio.h>


int _tmain(int argc, _TCHAR* argv[])
{
    void (*DllFunc) (void);
    HMODULE h;

  h=LoadLibrary(TEXT("WinRing.dll"));
  if (!h)
  {
    printf("Error WinRing.dll\n");
    getch();
    return 0;
  }

  DllFunc=(void (*) (void))
            GetProcAddress(h,"InitializeOls");
    if (!DllFunc)
  {
    printf("error no func\n");
    getch();
    return 0;
  }
  DllFunc();
    return 0;
}




В чем проблема может быть?
длл зарегестрированные в системе находит а эту нет хоте по всем папкам поиска распихал ее
PM MAIL   Вверх
Dem_max
Дата 31.1.2012, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



скорее всего InitializeOls  объявляется как __cdecl

Код

 typedef void __cdecl (*oupfuncPtr)(short portaddr, short datum); 


Это сообщение отредактировал(а) Dem_max - 31.1.2012, 14:23


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Pro100MoNEy
Дата 31.1.2012, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2010

Репутация: нет
Всего: нет



В хидере она обьявлена так

Цитата

BOOL // TRUE: success, FALSE: failure
WINAPI InitializeOls();


А как избавиться от ошибки линковщика?

Почему кокгда есть либы хидеры длл ,вроде все есть для счастья а эта херня неработает?!

Это сообщение отредактировал(а) Pro100MoNEy - 31.1.2012, 14:30
PM MAIL   Вверх
Dem_max
Дата 31.1.2012, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



Цитата(Pro100MoNEy @ 31.1.2012,  14:27)
В хидере она обьявлена так

Цитата

BOOL // TRUE: success, FALSE: failure
WINAPI InitializeOls();


А как избавиться от ошибки линковщика?

Ну а так какого ты вводишь в заблуждение вот с этим ??
Цитата

typedef void __stdcall (*oupfuncPtr)(short portaddr, short datum);



Код

typedef BOOL __stdcall (*oupfuncPtr)(void);



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Pro100MoNEy
Дата 31.1.2012, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2010

Репутация: нет
Всего: нет



А какая разница как она обьявляеться почему она не линкуется?
PM MAIL   Вверх
Dem_max
Дата 31.1.2012, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



сделай так 
#pragma comment (lib, "WinRing0.lib")


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Pro100MoNEy
Дата 31.1.2012, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2010

Репутация: нет
Всего: нет



Да делал я так, непомогает=(
PM MAIL   Вверх
bsa
Дата 31.1.2012, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



открой *.lib файл текстовым редактором (лучше hex) и посмотри, в каком виде представлены названия функций. Если вида 'Z4askj5kjdlk', то либа собрана компилятором С++ и предназначена исключительно для mingw.
PM   Вверх
Dem_max
Дата 31.1.2012, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



нет там InitializeOls@@YGHXZ


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Pro100MoNEy
Дата 31.1.2012, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.11.2010

Репутация: нет
Всего: нет



Цитата(bsa @ 31.1.2012,  16:45)
открой *.lib файл текстовым редактором (лучше hex) и посмотри, в каком виде представлены названия функций. Если вида 'Z4askj5kjdlk', то либа собрана компилятором С++ и предназначена исключительно для .

Примерно так ?InitializeOls@@YGHXZ что это значит? Использовать mingw?
А почему функция Loadlibary может не грузить длл? просто ненаходит ее,
PM MAIL   Вверх
Dem_max
Дата 31.1.2012, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



Цитата

А почему функция Loadlibary может не грузить длл? просто ненаходит ее,

Ты сам себе дал ответ, тупо не находит ее.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.