Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2008, 14:18   #1
Tan4ik
Пользователь
 
Аватар для Tan4ik
 
Регистрация: 20.04.2008
Сообщений: 18
Восклицание Подключение dll библиотеки

Здравствуйте,у меня сложилась следующая ситуация:
есть уже написанная библиотека dll(соответственно основные 3 файла имеются .dll,.h,.lib)Мне нужно написать проект, подключив данную библиотеку и унаследовав ее методы. Ответ на вопрос ,как именно подключить библиотеку я нашла в одной из тем на форуме:


Цитировать
"Речь идёт о том, где твои функции или классы объявлены. В СРР или LIB.
Поэтому тебе нужны 3 файла (если статическая LIB, то 2).
Например у тебя есть комплект:
MyLIb.h
MyLIb.lib
MyLIb.dll

который находится на в папке MyProject\mylib (проект находится MyProject\myexe - это для примера, чтоб показать использование пути)

Чтоб подключить в 6ой версии, идём в настройки проекта (Alt+F7) -> C/C++

Выбираем категорию Preprocessor и вводим дополнительнй путь (3 окошко ввода сверху)
../MyLib

это позволит делать #include без указания пути - в нашем случае
#include <MyLib.h> вместо #include "..\\MyLib\\MyLib.h"

Переходим на страничку настроек Linker. Выбираем категорию Input (Ввод)
если в списке используемых библиотек уже что-то стоит, то добавляем через пробел :!: нашу библиотеку:

kernel32.lib user32.lib gdi32.lib winspool.lib MyLib.lib

можно сразу указать путь к ней - "../MyLib/MyLib.lib" , но ( если планируется использовать несколько LIB) лучше это сделать в соответствующем месте - доп. пути для библиотек.

Вписываем туда ../MyLib

Нажимаем Ок.

Теперь достаточно инклудировать MyLib.h (например в stdafx.h) и доступ к функциям и классам этой библиотеки готов.

Примечания:
1. Если используется несколько библиотек и они лежат в разных местах, то необходимо перечислить все пути к h- и lib-файлам, через запятую. И все lib-файлы через пробел.

2. Если есть различные конфигурации проекта (напр. Debug и Release), то необходимо выполнить подключение библиотеки в каждой конфигурации.

3. Если вариант с DLL, после сборки она должна находится там, где находится ЕХЕ."
теперь при компиляции у меня возникают ошибки типа:

Код:
d:\1\debug\baseclasses\videosource. h(7) : fatal error C1083: Cannot open include file: 'streams.h': No such file or directory


Подскажите, пожалуйста, что делать и как с этим всем разобраться?

Последний раз редактировалось Tan4ik; 20.04.2008 в 14:30.
Tan4ik вне форума Ответить с цитированием
Старый 20.04.2008, 14:30   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Tan4ik Посмотреть сообщение
d:\1\debug\baseclasses\videosource. h(7) : fatal error C1083: Cannot open include file: 'streams.h': No such file or directory

Подскажите, пожалуйста, что делать и как с этим всем разобраться?
Найти, где находится этот 'streams.h' и попробовать, для начала, указать полный путь к нему в двойных кавычках (в #include). Больше без кода сказать сложно.
B_N вне форума Ответить с цитированием
Старый 20.04.2008, 14:48   #3
Tan4ik
Пользователь
 
Аватар для Tan4ik
 
Регистрация: 20.04.2008
Сообщений: 18
По умолчанию

Цитата:
Найти, где находится этот 'streams.h' и попробовать, для начала, указать полный путь к нему в двойных кавычках (в #include). Больше без кода сказать сложно.
Пыталась найти, но поиск не дал результатов...
код:
// VideoSource.h - Interface for CVideoSource class
// CVideoSource class builds DirecX graph to grab video frames

#pragma once

#include <windows.h>
#include <streams.h>
#include <stdio.h>
#include <atlbase.h>
#include <qedit.h>
#include "BaseImgProc.h"

#define _WIN32_DCOM

//================== CSampleGrabberCB =================================
// Implementation of CSampleGrabberCB object
// Note: this object is a SEMI-COM object, and can only be created statically.

class CSampleGrabberCB : public ISampleGrabberCB.....
ну и так далее

Да, действительно, не зная содержимого всех подключаемых ресурсов..очень сложно дать конкретный ответ на поставленный вопрос.
Имеются несколько библиотек:BaseClasses.dll,Control.d ll,CustomCtrl.dll,TenxHID.dll.Основ ной является BaseClasses.dll, в которой используются остальные. Мне нужно как-то подключить данную библиотеку и использовать методы каждой из имеющихся...(Ну попыталась немножко обьяснить конкретнее, что мне нужно, не знаю удалось ли...)
Tan4ik вне форума Ответить с цитированием
Старый 20.04.2008, 15:08   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Тот файл, который Вы ищете, у меня например находится в
"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Samples\Multimedia\DirectShow\Ba seClasses\streams.h". Не уверен, идёт ли он с более ранними SDK, но в составе VS .NET 2003 его нет. Поищите его у себя в Platform SDK, если имеете, иначе возможно придётся его ставить (или DirectX, или DirectShow SDK, скорее всего, он с ними должен быть).
B_N вне форума Ответить с цитированием
Старый 20.04.2008, 15:42   #5
Tan4ik
Пользователь
 
Аватар для Tan4ik
 
Регистрация: 20.04.2008
Сообщений: 18
По умолчанию

Спасибо,а вот меня интересует еще такой вопрос как динамическое подключение библиотек .DLL...?
Tan4ik вне форума Ответить с цитированием
Старый 20.04.2008, 16:26   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Tan4ik Посмотреть сообщение
интересует еще такой вопрос как динамическое подключение библиотек .DLL...?
Код:
#include <windows.h>
#include <stdio.h>

// Будем вызывать функцию 
// HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi);
// из shell32.dll

typedef struct _DllVersionInfo {
    DWORD cbSize;
    DWORD dwMajorVersion;
    DWORD dwMinorVersion;
    DWORD dwBuildNumber;
    DWORD dwPlatformID;
} DLLVERSIONINFO;

typedef struct _DLLVERSIONINFO2 {
    DLLVERSIONINFO info1;
    DWORD dwFlags;
    ULONGLONG ullVersion;
} DLLVERSIONINFO2;

//определяем прототип
typedef HRESULT (CALLBACK *DLLGETVERSION)(DLLVERSIONINFO2 *);

int main()
{
	DLLGETVERSION DllGetVersion;
	DLLVERSIONINFO2 dllvi2;

	// грузим библиотеку
	HMODULE hShell32Dll = LoadLibrary("shell32.dll");

	// получаем адрес функции
	*(FARPROC*) &DllGetVersion = GetProcAddress(hShell32Dll, "DllGetVersion");

	// и вызываем
	dllvi2.info1.cbSize = sizeof(DLLVERSIONINFO2);
	DllGetVersion(&dllvi2);

	printf(
		"dwMajorVersion : %u\n"
		"dwMinorVersion : %u\n"
		"dwBuildNumber : %u\n"
		"dwPlatformID : %u\n",
			dllvi2.info1.dwMajorVersion, 
			dllvi2.info1.dwMinorVersion,
			dllvi2.info1.dwBuildNumber,
			dllvi2.info1.dwPlatformID
	);

	FreeLibrary(hShell32Dll);

	getchar();
	return 0;
}
B_N вне форума Ответить с цитированием
Старый 21.04.2008, 19:04   #7
Tan4ik
Пользователь
 
Аватар для Tan4ik
 
Регистрация: 20.04.2008
Сообщений: 18
По умолчанию

B_N
Профессионал, огромное Вам спасибо.
Tan4ik вне форума Ответить с цитированием
Старый 01.03.2010, 21:02   #8
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

не знаю но я работаю в Builder 2006 в следующей интерпритации

HINSTANCE hDLL;
typedef char (_import * FType (char*));
FType * MyFunc;

hDLL = LoadLibrary ("Project1.dll");
if (hDLL !=0)
MyFunc = (FType *) GetProcAddress(hDLL,"Code_Dec");
else ShowMessage ("Не удача в загрузки");

if (MyFunc)
Label1->Caption = MyFunc ("Привет");
else ShowMessage ("Функция не доступна");

Но у меня вызывает сообщение Функция не доступна. Я тоже вот бьюсь над этой проблемой
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос с подключением мыши в графическом режиме Unconnected Паскаль, Turbo Pascal, PascalABC.NET 1 01.07.2008 10:26
Библиотеки в С++ MIKI Свободное общение 5 10.06.2008 20:15
Проблемы с подключением Катрина БД в Delphi 3 19.05.2008 00:57
Библиотеки Dll ivanesky Общие вопросы Delphi 9 10.03.2008 10:42
Мат библиотеки для С# TheGuardian123 Общие вопросы .NET 0 31.01.2008 18:10