用vc编写的MFC Dll程序在C#中调用 dll提供的是DCOM的接口函数
调用如下:
namespace AClasstest
{
using System.Runtime.InteropServices;
using System.ComponentModel;
    class CDll
    {
        [DllImport("DcomDll.dll", EntryPoint = "test", SetLastError = true)]
        public static extern int test();
    }
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            int c = 0;
            c = CDll.test();
            if (c == 1)
                MessageBox.Show("1");
            else
                MessageBox.Show("0");
        }
    }
}
在VS中编译后运行的时候不能够正确连接DCOM的服务,但是在生成好后的文件下运行的时候能够正确运行一次,然后后面就不成功。但在vc的应用程序的情况下是能够正常运行的。
希望做过这方面的朋友帮忙解决下!

解决方案 »

  1.   

    有些类库需要在DLL端执行释放的——否则不被回收,自然只能调用一次
      

  2.   

    关闭程序的时候
    MyDll.ToDoCloseDLL里面的ToDoClose方法执行本身释放Close或者dispose之类的操作
      

  3.   

    在C#中我单击按钮事件,只有发布出来后的程序在每次重新运行的时候能够正确响应一次,也就是messagebox能够正确地显示出1,然后后面单击按钮都是显示的0。而且vs开启源程序运行的时候不管什么时候都显示的是0。而vc里怎么都可以。好奇怪!
      

  4.   

    这是你说错了——实际上你的函数已经执行了,只是返回值错误,建议逐步设置断点然后进行错误判断
    函数里面CDll.test
    例如
    a=1
    代码
    a=2
    .....代码
    return a '先别返回正确与否看看问题出在哪一行,确定了才好解决。