C++Buidler开发的DLL在另一个C++Buidler工程中使用静态库如何在运行的的时候不需要DLL?

ansili 2008-11-20 11:07:12
C++Buidler开发的DLL在另一个C++Buidler工程中使用他的静态库如何在运行的的时候不需要DLL?
...全文
282 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssypas 2008-12-26
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 android2008 的回复:]
mark
[/Quote]
唉,怎么就好绕山绕水呢?即麻烦又何必呢。或许“有时候需要”真的是如23楼所说了。
android2008 2008-11-25
  • 打赏
  • 举报
回复
mark
jaffy 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 Behard 的回复:]
真是不知道说什么好!

知道 DLL 出现是为了解决什么问题吗?
其中一个就是为了修改 DLL 本身不需要修改主程序
(动态调用或者静态调用不改变函数接口)
[/Quote]
是啊,感觉如果想楼主这么用,干吗要用DLL
shiweifu 2008-11-25
  • 打赏
  • 举报
回复
静态编译吧。。需要LIB文件,LZ看下MFC相关解决办法,应该是相同的
Behard 2008-11-25
  • 打赏
  • 举报
回复
真是不知道说什么好!

知道 DLL 出现是为了解决什么问题吗?
其中一个就是为了修改 DLL 本身不需要修改主程序
(动态调用或者静态调用不改变函数接口)
hnzlk 2008-11-25
  • 打赏
  • 举报
回复
有时候需要。我以前也没试验过。今天弄了一下,真可以。不过有点麻烦。

得用BCB建立一个library,然后把dll工程的文件加进去,然后编译,实现不用dll.嘿嘿,有点麻烦。
BCBPLC 2008-11-24
  • 打赏
  • 举报
回复
把.DLL打包在.exe,没有大的技术用处,
唯一的好处是把别人有版权的.dll藏起来而已.
jaffy 2008-11-24
  • 打赏
  • 举报
回复
转妖哥发的个帖子
C++Builder和VC的Dll共用的确是一件麻烦事。下面给你举个例子:

C++Builder中,new一个Dll Wizard,不选用VCL,然后添加以下代码(注意导出函数使用的是__cdecl):

// 声明:
extern "C " __declspec(dllexport)
int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile);

// 定义:
int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile)
{
MessageBox(0, sReportFile, sSheetName, 0);
return 0;
}

然后手工建立一个1.def文件,并添加到工程中(Project--> Add to Project):
EXPORTS
TransExcel = _TransExcel

保存工程,并编译,假设生成Project1.dll。

接下来,需要在控制台下生成两个文件:
运行impdef project1.def project1.dll 生成VC使用的project1.def
运行lib /def:project1.def /machine:i386 生成VC使用的project1.lib

在VC中:
// 注意这里的Project1.lib文件路径
#pragma comment (lib, "Project1.lib ")
extern "C " int __cdecl TransExcel(char *sReportFile,char *sSheetName,char *sExcelFile);

然后就可以调用了:
TransExcel( "文件名称哈哈 ", "表名。 ", "保留 ");

我觉得必须保证你新建工程时选的是LIB类型而不是DLL类型时
jaffy 2008-11-24
  • 打赏
  • 举报
回复
implib只能生成DLL的列表啊,如何编译成带OBJ的啊
filec75 2008-11-24
  • 打赏
  • 举报
回复
不懂,up
filec75 2008-11-23
  • 打赏
  • 举报
回复
ding
___NULL 2008-11-22
  • 打赏
  • 举报
回复
如果对方给你的事LIB,你可以不用DLL,但如果仅仅给了DLL,就无法静态编译(编译为独立执行文件),否则你最多能做到静态加载
filec75 2008-11-22
  • 打赏
  • 举报
回复
up
vbcrack 2008-11-21
  • 打赏
  • 举报
回复
还需要在编译DLL时采用release吧
僵哥 2008-11-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xabcxyz 的回复:]
我看有人说话不够客气,不要急躁啊,搞技术谁没有坐井观天的时候呢?
把obj包含在工程文件代替lib文件中即可。
[/Quote]
对于某些拿无知当个性,从来不讲客气的,就无须客气。
xabcxyz 2008-11-21
  • 打赏
  • 举报
回复
我看有人说话不够客气,不要急躁啊,搞技术谁没有坐井观天的时候呢?
把obj包含在工程文件代替lib文件中即可。
filec75 2008-11-21
  • 打赏
  • 举报
回复
不懂,up
filec75 2008-11-21
  • 打赏
  • 举报
回复
ding
filec75 2008-11-21
  • 打赏
  • 举报
回复
不懂,帮顶
僵哥 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ansili 的回复:]
拿到DLL的LIB文件,然后在其它的项目中进行静态引入.关联后,不需要DLL文件.

不行的。
[/Quote]
DLL是动态库,需要把它编译成静态库,通常扩展名是.lib,然后链接进程序当中就不需要动态库了。
加载更多回复(9)
内容概要:SSD2828QN4是一款MIPI主桥接芯片,用于连接应用处理器与传统并行LCD接口及支持MIPI从属接口的LCD驱动器。该芯片支持最高每通道1Gbps的串行链路速度,最多可配置4个数据通道,显著减少了信号数量。它支持多种接口模式,包括RGB+SPI组合接口,适用于驱动智能或非智能显示面板,并能通过命令模式和视频模式传输数据。芯片内置时钟和复位模块、外部接口、协议控制单元(PCU)、包处理单元(PPU)、错误校正码/循环冗余校验(ECC/CRC)模块、长包和命令缓冲区、D-PHY控制器、模拟收发器以及内部锁相环(PLL),确保了高效的数据传输和系统稳定性。此外,文档详细描述了芯片的引脚分配、寄存器设置、操作模式、电源序列、时序特性等关键参数,为开发者提供了全面的技术指导。 适合人群:具备一定硬件设计基础,从事嵌入式系统开发、显示技术研究的研发人员。 使用场景及目标:①实现应用处理器与MIPI兼容显示屏之间的高速数据传输;②优化显示系统的功耗表现,减少电磁干扰(EMI);③通过灵活配置不同接口模式来适应各种显示设备的需求。 阅读建议:此文档面向具有一定电子工程背景的专业人士,建议读者结合实际项目需求深入理解各章节内容,特别是关于寄存器配置、时序要求等方面的具体说明。对于初次接触此类技术的开发者而言,建议先熟悉基本概念再逐步掌握高级功能的应用方法。

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧