Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Не понимаю, как подключить библиотеку в билдеру


Автор: dezhik 5.4.2011, 00:24
Всем привет!

Помогите пожалуйста.
Есть такой код:
Код

//---------------------------------------------------------------------------
#include <vcl.h>

#include <vfw.h>
#include <Windows.h>
#include <Clipbrd.hpp>

#pragma hdrstop


#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
        hWndC = capCreateCaptureWindow ( "",
                WS_CHILD,
                this->Image1->Left,this->Image1->Top,
                this->Image1->Width,this->Image1->Height,
                this->Handle,11011);
        capDriverConnect (hWndC, 0);
        Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
        TClipboard *pCB = Clipboard ();
        capGrabFrame(hWndC);
        if(capEditCopy(hWndC))
                Image1->Picture->LoadFromClipboardFormat(CF_BITMAP,
                        pCB->GetAsHandle(CF_BITMAP), 0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        capDriverDisconnect(hWndC);
}
//---------------------------------------------------------------------------
 

К проекту подключены библиотеки vfw32.lib и winmm.lib.
Запускаю на исполнение, ругается, говорит "Приложения не удалось запуститься, поскольку vfw32.dll не был найден. Помогите, не понимаю, в чем проблема.

Автор: volatile 5.4.2011, 00:46
Цитата(dezhik @  5.4.2011,  00:24 Найти цитируемый пост)
Не понимаю, как подключить библиотеку в билдеру 

По-моему библиотеку вы подключили, раз оно скомпилировалось.
осталось только vfw32.dll положить рядом с программой.

Автор: borisbn 5.4.2011, 08:15
если vfw32.dll уже лежит рядом, то, возможно, этой dll-ке чего-то не хватает. Посмотри dependencies этой dll-ки

Автор: dezhik 5.4.2011, 09:40
Цитата(volatile @  5.4.2011,  00:46 Найти цитируемый пост)
По-моему библиотеку вы подключили, раз оно скомпилировалось.
осталось только vfw32.dll положить рядом с программой. 

Извините, насколько я понимаю, библиотеки лежат в файлах lib. Например, та dll, что я нашел, даже имя другое несет - msfvw32.dll. И лежит она в папке windows\system32 - то есть должна быть видна по умолчанию. Да и вообще я не хочу использовать dll в проектах - ведь если есть lib, то она должна "Встроиться" в состав exe. Где бы почитать об этом?

Автор: borisbn 5.4.2011, 09:56
dezhik, здесь есть некоторая неразбериха в терминологии. Библиотеками называют всё, что хочешь...
К делу.

Цитата(dezhik @  5.4.2011,  00:24 Найти цитируемый пост)
"Приложения не удалось запуститься, поскольку vfw32.dll не был найден.

Цитата(dezhik @  5.4.2011,  09:40 Найти цитируемый пост)
имя другое несет - msfvw32.dll. И лежит она в папке windows\system32

так это разные библиотеки. Программа ищет именно vfw32.dll.

Цитата(dezhik @  5.4.2011,  09:40 Найти цитируемый пост)
ведь если есть lib, то она должна "Встроиться" в состав exe

С расширением lib существует два типа файлов: библиотека импорта и статическая библиотека. Первая просто помогает подгрузить функции из соответствующей dll-ки в runtime'е, точнее при старте программы. У тебя, судя по всему такая и есть, и тебе просто необходима соответствующая ей vfw32.dll.
Вторая содержит в себе весь код, подключается к программе на этапе линковки и не требует внешних dll-лек в runtime'е.

Добавлено через 4 минуты и 59 секунд
Цитата(dezhik @  5.4.2011,  09:40 Найти цитируемый пост)
Где бы почитать об этом?

http://www.rsdn.ru/article/baseserv/dlluse.xml
http://www.codenet.ru/progr/visualc/Using-DLL.php

Автор: xvr 5.4.2011, 11:37
У вас не тот vfw32.lib (слишком старый). Возьмите из PSDK (и сконвертируйте в BCB формат). Ваша dll vfw32.dll вообще 16ти битная  smile (IMHO)
А функции, которые вы хотите использовать живут в Avicap32.dll

Автор: dezhik 5.4.2011, 12:33
Цитата(xvr @  5.4.2011,  11:37 Найти цитируемый пост)
У вас не тот vfw32.lib (слишком старый). Возьмите из PSDK (и сконвертируйте в BCB формат). Ваша dll vfw32.dll вообще 16ти битная   (IMHO)
А функции, которые вы хотите использовать живут в Avicap32.dll

А можно поподробней уточнить, как сконвертировать в этот формат? И еще вопрос - насколько я понял, этот борланд с++ 6.0 староват уже стал, что ли? А что есть из иде поновее, но чтобы не .NET? 
UPD: Помогло импортирование из avicap.dll файла avicap.lib. с помощью implib. Актуален вопрос о каком нибудь более свежем билдере.

Автор: xvr 5.4.2011, 16:38
Цитата(dezhik @  5.4.2011,  12:33 Найти цитируемый пост)
Актуален вопрос о каком нибудь более свежем билдере.

После 6.0 был BDS 2006. Сейчас последний 2010. Код они генерят стандартный (VCL), не .NET (Хотя вроде и с .NET дружат)

Цитата(dezhik @  5.4.2011,  12:33 Найти цитируемый пост)
А можно поподробней уточнить, как сконвертировать в этот формат?

coff2omf.exe из папки bin в Builder'е

Автор: dezhik 6.4.2011, 10:41
Цитата(xvr @  5.4.2011,  16:38 Найти цитируемый пост)
После 6.0 был BDS 2006. Сейчас последний 2010. Код они генерят стандартный (VCL), не .NET (Хотя вроде и с .NET дружат)

А как насчет CodeGear RAD studio 2007? В целях изучения и чтоб не очень старая была.

Цитата

Цитата(dezhik @  5.4.2011,  12:33 )
А можно поподробней уточнить, как сконвертировать в этот формат?

coff2omf.exe из папки bin в Builder'е

Спасибо помогло.

Автор: xvr 6.4.2011, 11:05
Цитата(dezhik @  6.4.2011,  10:41 Найти цитируемый пост)
А как насчет CodeGear RAD studio 2007?

Нормально  smile (Это BDS 2007). В последних версиях все перевели в Unicode (со старыми проектами могут быть проблемы)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)