在c#中写了如下类库:
amespace netadd
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class add
{
public add()
{
//
// TODO: 在此处添加构造函数逻辑
// }
public int addab(int a,int b)
{
return a+b;
}
}
}
生成时项目属性com interop也设置为true然后使用RegAsm.exe进行了注册
在delphi中对生成的tlb文件进行了引入安装
控件中生成了新的组件 Tadd
但是这个组件没有addad方法阿
怎么使用呢
是我的类写的不对吗?
amespace netadd
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class add
{
public add()
{
//
// TODO: 在此处添加构造函数逻辑
// }
public int addab(int a,int b)
{
return a+b;
}
}
}
生成时项目属性com interop也设置为true然后使用RegAsm.exe进行了注册
在delphi中对生成的tlb文件进行了引入安装
控件中生成了新的组件 Tadd
但是这个组件没有addad方法阿
怎么使用呢
是我的类写的不对吗?
解决方案 »
- delpni7自适应屏幕大小
- 升星星了 散分
- 请教个关于image的问题
- 请问如何在QRedort里实现多栏目的明细主从打印??急!!!在线等
- DELPHI调用QVOD的COM组件出EOlesyserror 未指定错误!急!!
- 一個搞笑的問題
- 菜鸟想问如何实现如下功能,我的程序运行之后,如果用户10分钟没有动鼠标、键盘,程序将自动关闭,如何实现??
- delphi中如何取得字符串的子串?
- xe7下的pos函数返回结果异常求问
- 菜鸟问题,变量前加一个@表示什么?比如@MyCount
- Delphi QQ群:19072429 访天下名士加入,共同进步!
- 想定义一个不用赋record值的结构,如何写呢?
急啊
在vb里是可以调用成功的
但delphi里不会用啊
var
addab:Taddab;
FHandle:THandle;
begin
FHandle:=loadlibrary('c:\a.dll');
if FHandle>0 then
begin
@addab:=GetProcAddress(FHandle,'addab');
if @addab<>nil then
showmessage(inttostr(addab(1,1)));
end;
freeLibrary(FHandle);
end;
C#中 可以这样 去开发一个COM组件:
新建一个库类zk
using System;
using System.Runtime.InteropServices;
namespace zk
{
public interface Itest
{
string hello(string text);
}
[Guid("45afe420-07af-4746-9594-fe950ca3c9e4")]
public class myclass : Itest
{
public string hello(string text)
{
return text;
}
}
}
进入Visual Studio .NET 2003 命令提示
进入工程所在的目录的bin\Debug\
用命令 sn -k 1.snk 建立一个密锁对.
修改AssemblyInfo.cs中
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyKeyFile("1.snk")]
[assembly: AssemblyKeyName("1.snk")]
编译找个库类会生成zk.dll
命令提示符 输入 regasm zk.dll
再输入 gacutil /I zk.dll
提示Assembly successfully added to the cache
此时注册表中 就会存在{45afe420-07af-4746-9594-fe950ca3c9e4}
OK 了,此时就可以访问zk.myclass对象在vb中的确可以调用zk.myclass对象
但在delphi中引入后,生成的类文件中没有string hello(string text);
这个方法,请多多发言!