delphi7 调用c++ 写的类
解决方案 »
- 修改Delphi软件适合不同分辨率(附源代码)500元
- 能动态增加变量吗?如动态地增加Lable1,Lable2,...Lable30.目的是能关联动态的对象.
- 有汉字的问题,高手进入
- 如何设置TMemo或者TListBox某行的颜色???
- 一个简单问题
- 每个贴子都是100分,都是关于SQL Server 2000和Delphi的问题。大家帮忙看一下,贴子的位置见本贴子的内容。
- 绘制图形时的自动滚屏问题
- 一实数个数组怎样用统计表现出来
- 高手们:图象文件是如何切割成,又如何合成一副图象的呢(比如BMP)?
- 如何能知道SQLSERVER数据库中表是否改变?
- 各路大侠请帮忙!
- 哪位高手可以帮到我,如何写日志??请进来……
class ITalking
{
public:
virtual void __stdcall SetComplete();
}TTalking = class
pbulic
procedure SetComplete();virtual;stdcall;
end;
// 不过怎么把类的信息传过来是个问题,
// 我只想到在dll中另外加输出类函数的方法
// delphi中的声明
const VMTTest = 'G:\PROJECTS\VMTTest\Debug\VMTTest.dll';
type
CTest = class
public
// 因为仅是一个定义,所以必须为abstract方法。
procedure HelloWorld; virtual; stdcall; abstract;
end; TCreateTest = function: CTest; stdcall;procedure TForm1.Button1Click(Sender: TObject);
var C: CTest;
var H: THandle;
var CreateTest: TCreateTest;
begin
H := LoadLibrary(VMTTest);
@CreateTest := GetProcAddress(H, '_CreateTest@0');
if @CreateTest <> nil then
begin
C := CreateTest;
if C <> nil then
C.HelloWorld
else
Caption := 'nil';
end
else
Caption := 'fail';
FreeLibrary(H);
end;//vc中的声明
class CTest{
public:
virtual void __stdcall HelloWorld(){
MessageBox(0, "Hello, World", "Test", 0);
delete this; // 加这行代码仅为方便删除自己
};
// TODO: add your methods here.
};// 下面这个函数用来输出类
extern "C" _declspec(dllexport) CTest * __stdcall CreateTest()
{
return new CTest();
};