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

ansili 2008-11-20 11:07:12
C++Buidler开发的DLL在另一个C++Buidler工程中使用他的静态库如何在运行的的时候不需要DLL?
...全文
283 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)
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

703

社区成员

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

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