社区
C++ Builder
帖子详情
如何从动态库DLL生成静态的LIB并使用???
CPerlAsm_Lx
2003-11-09 07:10:39
如何从动态库DLL生成静态的LIB并使用???
...全文
182
7
打赏
收藏
如何从动态库DLL生成静态的LIB并使用???
如何从动态库DLL生成静态的LIB并使用???
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chifengwatch
2003-11-17
打赏
举报
回复
使用 $BCB path\Bin\implib.exe 生成 Lib 文件,加入到工程文件中
将该文件拷贝到当前目录,使用 implib MyDll.lib MyDll.dll 生成
swotcoder
2003-11-17
打赏
举报
回复
》bluedodo(笑三少)
你的方法是导出引入库
他需要的是静态库。
swotcoder
2003-11-17
打赏
举报
回复
用动态加载的方式可以搞定,只要有头文件即可。
bluedodo
2003-11-17
打赏
举报
回复
不知道楼主有没有VC,:)
Visual C++ 开发工具提供了两个命令行工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。
1、在命令行执行:
dumpbin /exports yourdll.dll > yourdll.def
2、编辑 yourdll.def 文件,使之格式与.def文件格式一致。比如:
EXPORTS;
fn1;
fn2;
3、在命令行执行:
lib /def:yourdll.def /machine:i386 /out:yourdll.lib
这样就可以导出对应的LIB了,但你要用的话,要在工程中自己手工加上
Jinglihui
2003-11-17
打赏
举报
回复
支持一楼的兄弟
fatwave
2003-11-09
打赏
举报
回复
作者: Behard 阅读:1565 加入时间:2003-6-5 本文来自http://www.ccrun.com
--------------------------------------------------------------------------------
由于现在比较多的网友老是在 CSDN 上询问关于 BCB 编写 DLL 的问题,我编写了这篇文章抛砖引玉
一. 编写 DLL
File/New/Dll 生成 Dll 的向导,然后可以添加导出函数和导出类
导出函数:extern "C" __declspec(dllexport) ExportType FunctionName(Parameter)
导出类:class __declspec(dllexport) ExportType ClassName{...}
例子:(说明:只是生成了一个 DLL.dll )
#include "DllForm.h" // TDllFrm 定义
USERES("Dll.res");
USEFORM("DllForm.cpp", DllFrm);
class __declspec(dllexport) __stdcall MyDllClass { //导出类
public:
MyDllClass();
void CreateAForm();
TDllFrm* DllMyForm;
};
TDllFrm* DllMyForm2;
extern "C" __declspec(dllexport) __stdcall void CreateFromFunct();//导出函数
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}
//---------------------------------------------------------------------------
MyDllClass::MyDllClass()
{
}
void MyDllClass::CreateAForm()
{
DllMyForm = new TDllFrm(Application);
DllMyForm->Show();
}
//---------------------------------------------------------------------------
void __stdcall CreateFromFunct()
{
DllMyForm2 = new TDllFrm(Application);
DllMyForm2->Show();
}
二. 静态调用 DLL
使用 $BCB path\Bin\implib.exe 生成 Lib 文件,加入到工程文件中
将该文件拷贝到当前目录,使用 implib MyDll.lib MyDll.dll 生成
// Unit1.h // TForm1 定义
#include "DllForm.h" // TDllFrm 定义
//---------------------------------------------------------------------------
__declspec(dllimport) class __stdcall MyDllClass {
public:
MyDllClass();
void CreateAForm();
TDllFrm* DllMyForm;
};
extern "C" __declspec(dllimport) __stdcall void CreateFromFunct();
class TForm1 : public TForm{...}
// Unit1.cpp // TForm1 实现
void __fastcall TForm1::Button1Click(TObject *Sender)
{ // 导出类实现,导出类只能使用静态方式调用
DllClass = new MyDllClass();
DllClass->CreateAForm();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{ // 导出函数实现
CreateFromFunct();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete DllClass;
}
三. 动态调用 DLL
// Unit1.h
class TForm1 : public TForm
{
...
private: // User declarations
void (__stdcall *CreateFromFunct)();
...
}
// Unit1.cpp // TForm1
HINSTANCE DLLInst = NULL;
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if( NULL == DLLInst ) DLLInst = LoadLibrary("DLL.dll"); //上面的 Dll
if (DLLInst) {
CreateFromFunct = (void (__stdcall*)()) GetProcAddress(DLLInst,
"CreateFromFunct");
if (CreateFromFunct) CreateFromFunct();
else ShowMessage("Could not obtain function pointer");
}
else ShowMessage("Could not load DLL.dll");
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if ( DLLInst ) FreeLibrary (DLLInst);
}
rookieme
2003-11-09
打赏
举报
回复
1 用implib.exe 生成lib
2 在IDE界面的菜单Project/Add to Project 中将生成的lib加入工程
3 将要用的函数先申明,然后就可以直接用了
32位
lib
mysql.
dll
和32位
lib
mysql.
lib
lib
mysql.
dll
是一个动态链接库文件,而
lib
mysql.
lib
是对应的
静态
链接库文件。 **1. MFC与数据库连接** MFC是微软提供的一套C++类库,用于简化Windows应用程序开发,它提供了对WinAPI的封装。在MFC中,可以
使用
ODBC...
ws2_32.
lib
.zip
这两个组件是Windows Socket 2(Winsock2)接口的动态链接库(
DLL
)和
静态
链接库(
LIB
),用于支持在Windows操作系统上进行网络编程。 首先,让我们深入了解ws2_32.
dll
。这是一个系统级的动态链接库,它实现了...
在 windows 上如何根据
dll
动态库
生成
lib
文件?
例如,我这里有一个 test.
dll
动态库
文件,我想要
生成
lib
链接库文件可以这样操作。 打开 Developer Command Prompt for VS 2022 开发工具命令行,用来设置运行变量。
使用
dumpbin.exe /EXPORTS test.
dll
> ...
静态
库(
lib
)和
动态库
(
dll
)的
使用
静态
库(
lib
)和
动态库
(
dll
)的理解与
使用
前言一、函数重载的理解二、extern “C” 的理解三、
静态
库的调用1.
静态
库的
生成
2.
静态
库的调用四、
动态库
的调用1.
动态库
的
生成
2.
动态库
的调用 前言 说明
静态
库和...
由
动态库
文件
dll
生成
lib
库文件
本文基于OpenBlas的编译和安装,来说明如何从一个
dll
文件
生成
lib
库文件。 参考OpenBlas的说明“Howto generate import
lib
rary for MingW”,和MinGW的说明HOWTO Create an Import
Lib
rary for a
DLL
using MinGW,...
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章