=====如何在BCB里使用VC编写的DLL=====

babysloth 2001-03-25 10:26:00
其实就是如何在不同编译器之间共用DLL的问题,我是这么做的
1 自己建立一个def文件,格式是
……
粉碎后的名字(BORLAND的办法) @代号
2 用Borland的ImpLib借助这个DEF文件得到LIB
3 链接没有问题
运行就当了。

正确的办法应该是什么呢?越简单越好,但是不许是叫我用BCB重新编译DLL ^_^
...全文
169 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
thcay 2001-05-28
  • 打赏
  • 举报
回复
不过要注意版本哦~~~~
以前我吃过一个亏,不过不是BCB和VC打架,而是BCB 3和BCB 4兄弟打架。
我用BCB 4写的DLL无法在BCB 3编译运行的EXE调用,一开始我死活找不出毛病。
后来把那个DLL用BCB 3重新编译,OK.
NowCan 2001-05-28
  • 打赏
  • 举报
回复
和holyfire的一样。
NowCan 2001-05-28
  • 打赏
  • 举报
回复
http://www.bcbdev.com/articles/vcdll2.htm
NowCan 2001-05-26
  • 打赏
  • 举报
回复
有办法,我以前看过,等我去找找。
holyfire 2001-05-25
  • 打赏
  • 举报
回复
有一种方法可以变相的做到

//h
#ifndef DLL_H
#define DLL_H

#ifdef BUILD_DLL
#define DLLAPI __declspec(dllexport)
#else
#define DLLAPI __declspec(dllimport)
#endif

// psuedo COM interface
class IFoo
{
public:
virtual int __stdcall DoSomething(int x) = 0;
virtual __stdcall ~IFoo() = 0;
};

#ifdef __cplusplus
extern "C" {
#endif

DLLAPI IFoo* __stdcall new_IFoo(int x);
DLLAPI void __stdcall delete_IFoo(IFoo *f);

#ifdef __cplusplus
}
#endif

#endif

//cpp
#define BUILD_DLL

#include "dll.h"

IFoo::~IFoo()
{
// must implement base class destructor
// even if its abstract
}

// Note: we declare the class here because no one outside needs to be concerned
// with it.
class CFooImpl : public IFoo
{
private:
CFoo m_Foo; // the real C++ class from the existing MSVC C++ DLL
public:
CFooImpl(int x);
virtual ~CFooImpl();
virtual int __stdcall DoSomething(int x);
};

CFooImpl::CFooImpl(int x)
: m_Foo(x)
{
}

int __stdcall CFooImpl::DoSomething(int x)
{
return m_Foo.DoSomething(x);
}

CFooImpl::~CFooImpl()
{
}

IFoo * __stdcall new_IFoo(int x)
{
return new CFooImpl(x);
}

void __stdcall delete_IFoo(IFoo *f)
{
delete f;
}

//test
#include "dll.h"

void bar()
{
int x = 10;
int y = 20;
int z;


IFoo *foo = new_IFoo(x);
z = foo->DoSomething(y);
delete_IFoo(foo);
}


hyena 2001-05-24
  • 打赏
  • 举报
回复
COM dll是很好的解决方案,不存在C++对函数名修饰标准不同所导致的问题
cun 2001-05-24
  • 打赏
  • 举报
回复
我想这是不是不能实现,我在jeffry的<<windows高级编程指南>>(第三版)看到这样一段话:"使用不同的编译器来输出和引入C++函数几乎是不可能的,因为win32编译器的供应商没有对修改函数名的算法取得一致意见.........."(书446页12.5节最后)
我只是编过DLL,用VC,但没在别的环境下使过!
具体情况,我不太熟悉,以上的话尽供产考,别对你产生误导!
holyfire 2001-05-24
  • 打赏
  • 举报
回复
使用
class __declspec(dllimport)A
{
public:
A();
~A();
};
作为申明
包含导出库不可以吗?
babysloth 2001-03-28
  • 打赏
  • 举报
回复
又没人知道吗?
babysloth 2001-03-26
  • 打赏
  • 举报
回复
比如DLL里是
class __declspec(dllexport) A
{
public:
A();
~A();
};
现在EXE里是导入它,该怎么做?
编译EXE和DLL的编译器不一样。
babysloth 2001-03-26
  • 打赏
  • 举报
回复
比如DLL里是
class __declspec(dllexport) A
{
public:
A();
~A();
};
现在EXE里是导入它,该怎么做?编译
babysloth 2001-03-26
  • 打赏
  • 举报
回复
非常抱歉,不小心忘了写清楚。不是函数,而是类。
VC编写的DLL导出一个class,用BCB编写的EXE导入,所以不能用LoadLibrary,
也无法避免“名字粉碎”的问题。
holyfire 2001-03-26
  • 打赏
  • 举报
回复
用extern "C"来防止名字分裂,用ImpLib生成lib
VC中用stdcall和_declspec(dllexport) 修饰函数声明
用_declspec(dllimport)来修饰函数声明。
ringphone 2001-03-26
  • 打赏
  • 举报
回复
假设DLL中有个函数void test(void)
BOOL RunDll()
{
typedef void (*MYPROC)(void);
HMODULE hLib;

MYPROC lpFunc;

hLib=LoadLibrary(Dll文件);
if(hLib==NULL)
return FALSE;

lpFunc=(MYPROC)GetProcAddress(hLib,"test");
if(lpFunc==NULL)
return FALSE;

(lpFunc)();
FreeLibrary(hLib);

return TRUE;
}
yoci 2001-03-26
  • 打赏
  • 举报
回复
1。LoadLibrary()
2。GetProcAddress()
babysloth 2001-03-26
  • 打赏
  • 举报
回复
当然如何在VC中使用BCB编写的DLL也是同样的问题了
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于VB.NET, C#, VB, VC, Delphi, BCB, 易语言等。B/S开发适用于ASP.NET, ASP, PHP, JSP(Java)等,支持所有操作系统服务器与WEB服务器。开发C/S报表与B/S报表共享相同的开发知识与设计资源。提供独有的报表查询显示功能,让报表查询显示、打印、打印预览及数据导出等功能集成一体化实现。轻松实现表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、表中表及各种特殊报表等,是中式报表的最佳开发工具。提供详尽帮助文档与各种编程平台下的丰富例子,安装中包括可直接运行例子程序,安装后即刻体验此报表工具。Unicode编码,多国语言集成支持。历经数年发展,多家有影响力的通用软件厂商选用,用户遍布各行各业,已经成为用户受众面最广的国产报表工具。 Grid++Report 报表组件具有如下特点: 1、支持C/S报表与B/S报表开发,支持全部主流开发语言。C/S开发:VB.NET、C#、VB、VC、Delphi等,B/S开发:ASP.NET、ASP、PHP、JSP等,支持所有WEB服务器。 2、多国语言集成支持与UNICOD E编码支持,方便开发多国语言软件。 3、功能强大,稳定高效:实现表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,适合开发通用软件中的动态报表。 4、独有的报表查询显示功能:提供报表查询与输出的集成一次性实现,保证数据不同展现方式的一致性与完整性。 5、报表数据来源丰富:支持绑定(报表数据拉模式)与非绑定(报表数据推模式),一切数据库数据与其它数据都可以作为报表数据源。 6、提供图表功能,包括:饼图、叠加饼图、柱状图、气泡图、折线图、曲线图、散列点图等,支持三维图形。 7、报表数据导出格式丰富,格式包括:Excel、RTF、PDF、图像、HTML、文本,CSV 等。 8、支持数十种一维条码,支持PDF417与QRCode这两种最常用的二维条码,条码打印精度高且易读取。 9、提供脚本编程功能,直接在报表模板中自定义报表行为,采用通用的JScript与VBScript脚本引擎。 10、特有的分组单元格合并功能,轻松实现常见的中国式报表分组在列中展现并垂直居中要求。 11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层表头等。很多在国外报表工具中很难实现的功能都可以轻易实现。 12、提供丰富交互事件,轻松实现报表行为自定义、穿透(透视)查询和报表交互。 13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复重做(Undo/Redo)功能,专业的拖放操作与即时编辑功能。 15、编写了完整详尽的帮助文档。提供了丰富例程,C/S报表包括VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、中文编程易语言,B/S报表包括ASP.NET,ASP,PHP,JSP。 Grid++Report 网站:http://www.rubylong.cn Grid++Report 演示:http://www.rubylong.cn/WebReport
Grid++Report是一款C/S与B/S集成报表工具,功能全面易学易用。C/S开发适用于C#, VB.NET, VB, VC, Delphi, BCB, 易语言等。B/S开发适用于ASP.NET, JSP(Java), ASP, PHP 等,支持所有操作系统与WEB服务器。开发C/S报表与B/S报表共享相同的开发知识与设计资源。提供独有的报表查询展示功能,让报表查询展示、打印、打印预览及数据导出等集成一体化实现。轻松实现中式表格报表、动态报表、多层表头、票据套打、交叉表、统计图表、条形码等,是中式复杂报表的最佳开发工具。提供详尽帮助文档与各种编程语言下的丰富例子,安装中包括可直接运行例子程序,安装后即刻体验报表功能。Unicode编码,多国语言集成支持。历经十年发展,多家有影响力的通用软件厂商选用,用户遍布各行各业,已经成为用户受众面最广的国产报表工具。 Grid++Report 报表组件具有如下特点: 1、支持C/S报表与B/S报表开发,支持全部主流开发语言。C/S开发:VB.NET、C#、VB、VC、Delphi等,B/S开发:ASP.NET、JSP、ASP、PHP等,支持所有WEB服务器。 2、多国语言集成与UNICODE编码支持,方便开发多国语言软件。 3、功能强大,稳定高效:实现表格报表、多层表头、票据套打、交叉表等各种报表非常简便;报表完全可编程定义,适合开发通用软件中的动态报表。 4、独有的报表查询显示功能:提供报表查询与输出的集成一次性实现,保证数据不同展现方式的一致性与完整性。 5、报表数据来源丰富:支持绑定(报表数据拉模式)与非绑定(报表数据推模式),一切数据库数据与其它数据都可以作为报表数据源。 6、提供图表功能,包括:饼图、叠加饼图、柱状图、气泡图、折线图、曲线图、散列点图等,支持三维图形。 7、报表数据导出格式丰富,格式包括:Excel、RTF、PDF、图像、HTML、文本,CSV 等。 8、支持数十种一维条码,支持PDF417与QRCode这两种最常用的二维条码,条码打印精度高且易读取。 9、提供脚本编程功能,直接在报表模板中自定义报表行为,采用通用的JScript与VBScript脚本引擎。 10、特有的分组单元格合并功能,轻松实现常见的中国式报表分组在列中展现并垂直居中要求。 11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层表头等。很多在国外报表工具中很难实现的功能都可以轻易实现。 12、提供丰富交互事件,轻松实现报表行为自定义、穿透(透视)查询和报表交互。 13、重新发布简单:C/S报表只需分发两个DLL文件;B/S报表只要在WEB服务器布署报表网页与报表插件安装包,服务端不需其它配置,客户端零配置。 14、易学易用:完全可视化设计,完善的复制/剪切/粘贴(Copy/Cut/Paste)和恢复重做(Undo/Redo)功能,专业的拖放操作与即时编辑功能。 15、编写了完整详尽的帮助文档。提供了丰富例程,C/S报表包括VB.NET、C#、VB、VC、Delphi、C++Builder、VFP、中文编程易语言,B/S报表包括ASP.NET,ASP,PHP,JSP。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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