使用VC6写了两个动态库:A-只实现了加法Add() B-实现了只显示对话框
C#调用A动态库没有问题,调用B动态库就会出错,弹出VC的错误显示框,调试似乎是有关资源的问题,资源句柄为空.
请问大家:调用带资源的动态库有什么限制吗?

解决方案 »

  1.   

    谢谢!
    动态库里就是插入一个对话框,上面什么也没有,创建一个对应类,然后在app里写一个全局函数,让对话框类DoModal().在.def里输出这个函数.别的什么也没做.动态库是基于扩展MFC的.
    C#:p/Invoke方法 
       DllImport[]
       ......
    应该调用过程没错.
    楼上的老兄如果能够写个测试代码发给[email protected],非常感谢!
      

  2.   

    楼上的兄弟,我是用这个调用的,调用动态库A成功了,动态库B调用出错了.
    B动态库是弹出一个对话框.不知道有什么限制....
      

  3.   

    to B动态库是弹出一个对话框.不知道有什么限制.函数是什么,如何声明的
      

  4.   

    DlgTest.dll动态库部分代码:
    1、DlgTest.cpp#include "Win32TestDlg.h" void _FrameFindApplicationDLG()
    {
       CWin32TestDlg dlg;
       dlg.DoModal();}
    ......2、DlgTest.def _FrameFindApplicationDLG() @13、Win32TestDlg.h和Win32TestDlg.cpp中什么也没做测试:
    1、创建了一个VC 对话框exe程序,动态加载此动态库,调用函数,成功!
    2、创建一个.Net程序,C#编写,部分代码如下:
    using System.Runtime.InteropServices;//这是用到DllImport时候要引入的包[DllImport("DlgTest.dll",CharSet=CharSet.Auto)]
    static extern void _FrameFindApplicationDLG();private void button1_Click(object sender, System.EventArgs e)
    {
       _FrameFindApplicationDLG();
    }
    出错:Debug Assertion Failed!  
          Program:E:\DllTest\bin\Debug\DllTest.exe
          File:afxwin1.inl
          Line:22
          For information on how your program can cause an assertion
          faiure,see the visual C++ document on asserts.
          (Press Retry to debug the application)
      

  5.   

    B就是带对话框资源,新插入了一个对话框,用向导添加了对话框类,在输出函数里显示此对话框
    A就是没添加任何资源,直接写了个加法函数,输出.
    就这些区别.
    哪位兄弟能写个简单的显示对话框的动态库
    然后C#调用,把成功的简单代码象上面一样贴一下?
    谢谢!!!!
      

  6.   

    另外,和本贴无关,有个问题问一下大家:如果不安装vc6,.net有没有支持MFC的运行时