请问:   vc++ 调用C#的dll(dmp.dll文件)时,编译时出错。错误如下:    fatal error C1113: 在“f:\测试用例1\vmtest\debug\dmp.dll”上 #using 失败代码如下:   #using "..\debug\dmp.dll"  需要在项目属性中进行设置其他的吗?请指导,谢谢!

解决方案 »

  1.   

    c#的dll能不能做成com?
    vc调用com就简单多了
      

  2.   

    import 试试。#import "CSClientDll.tlb"
      

  3.   


    回楼上的几位兄弟,我采用了两种方式:1.C#类库代码生成DLL,去调用是可以的。但是在代码量大的工程中,编译时出现如下警告。
       1>f:\Test Manage System\test2\JobDlg.cpp : warning C4793: “CJobDlg::`vcall'{356}'”: 编译为本机的函数:
    1> 非 clrcall vcall thunk 必须编译为本机
    1>正在编译...
    1>DatabaseRestoreDlg.cpp1>正在生成代码...
    1>正在编译资源...
    1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
    1>Copyright (C) Microsoft Corporation. All rights reserved.
    1>正在链接...
    1>XqSdSetDlg2.obj : warning LNK4248: 无法解析 typeref 标记(01000011)(为“_TREEITEM”);映像可能无法运行
    1>Set11Dlg.obj : warning LNK4248: 无法解析 typeref 标记(01000012)(为“_TREEITEM”);映像可能无法运行
    1>Set22Dlg.obj : warning LNK4248: 无法解析 typeref 标记(01000011)(为“_TREEITEM”);映像可能无法运行1>正在嵌入清单...
    1>正在缓存 c:\program files\common files\system\ado\msado15.dll 的元数据信息...
    1>无法缓存 c:\program files\common files\system\ado\msado15.dll 的元数据: 反射失败。
    1>正在缓存 f:\test manage system\debug\vmp.dll 的元数据信息...
    1>生成日志保存在“file://f:\Test Manage System\test2\Debug\BuildLog.htm”
    1>test2 - 0 个错误,28 个警告
    ========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 2.C#类库代码生成COM接口。用tlb文件  在本机上是可以调用的,但是把tlb放到其他的PC机上新建一个VC++ 工程使用时,出现没有注册类别的问题。也用不了。
      

  4.   

    我的也是这样的情况,c#生成了com的dll和tlb,在本机上用vc6.0可以调用成功,把工程代码拷贝到另外一台机器后,首先编译时提示tlb不能导入,用regasm注册tlb和dll后,编译正常了。可是调用时却在下面第二句代码出错
    CoInitialize(NULL);

    CameraAuthorizer::CameraAuthorizerInterfacePtr p_Add(_uuidof(CameraAuthorizerService));
    在本机上运行是很正常的