非托管访问托管类库方法

一、托管类库的创建(VC#)
    1、要公布给非托管程序访问的方法、属性必须同时以接口形式公布,该类实现该接口,接口中没有
的方法、属性,非托管客户端是无法访问的;
    2、所有共享程序集必须带有强名称(由发行者签名)。
       实现强签名方法:在assemblyinfo.cs中写入密钥文件名,然后编译即可
  例如[assembly:AssemblyKeyFile("sample.snk")] 默认搜寻路径为%Project Directory%\obj\
    3、启动vs.net控制台程序,执行 regasm  /tlb: ***.tlb ***.dll,以生成相应dll的tlb文件
    4、使用 Gacutil.exe 将程序集添加到全局程序集缓存,执行gacutil /i ***.dll
二、非托管库客户端的创建(vb6中只需添加个引用即可,以下讲vc6)
    1、引入tlb文件,同时引入命名空间。例如:
 #import "LoanLib.tlb" raw_interfaces_only
 using namespace LoanLib;
    2、 HRESULT hr = CoInitialize(NULL);//初始化com
 ILoanPtr pILoan(__uuidof(Loan));//实力化服务器对象
 long x; 
 pILoan->add(10,20,&x);
 //引用服务器类方法,一般有返回值的,返回值会变成最后一个参数,本例中x即为返回值
 CoUninitialize();        //释放com
   
原文地址:https://www.cnblogs.com/Finding2013/p/221535.html