zoukankan      html  css  js  c++  java
  • dll开发中遇到的问题

    刚碰到个问题,我的一个项目中引用了一个dll,这个dll又引用了另一个dll,我把这俩个都放在bin文件夹下,但是会报错,说第二个dll找不到。把它放到系统文件夹system32下就没事了。

    但是遇到一个奇怪的问题,我的各部分代码是只有的:

    Text.c

    int plus(int a,int b)
    {
        return a+b;
    }
    char *cplus(char *a,char **b)
    {
        sprintf(*b,"%s",a);
        int f=1+1;
        return a;
    }

    Text.h

    TEXT_API int plus(int a,int b);

    TEXT_API char *cplus(char *a,char **b);
    _Text.cs

    public class Class1
        {
            [DllImport("text.dll", EntryPoint = "plus", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
            public static extern int qplus(int a, int b);
            [DllImport("text.dll", EntryPoint = "cplus", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
            public static extern string cplus(string a, ref string b);
        }

    Index.cs

     private void button1_Click(object sender, EventArgs e)
            {
                int tem = Class1.qplus(1, 2);
                string a = "111";
                MessageBox.Show(tem.ToString());
            }

            private void button2_Click(object sender, EventArgs e)
            {
                string a = "111";
                string b = "";
                string c=Class1.cplus(a,ref b);
                MessageBox.Show(b);
                MessageBox.Show(c);

            }
    当然这样是没有问题的,但是当c语言部分返回*b的时候,在最后的Index中调用cplus函数的返回值就会有问题。个人表示很不解,目前也不知是何原因,先放在这里吧。如果有哪位大神看到了还请赐教。

  • 相关阅读:
    Java中的四种内部类
    用输入/输出写一个程序,让用户输入一些姓名和电话号码
    分批读取大数据问题
    Linux产生序列数字
    两个有序链表的合并
    int和Integer的区别
    wait()和sleep()的区别
    Unix和Windows文件格式转化
    截取字符串的代码实现
    查看系统信息
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/3983660.html
Copyright © 2011-2022 走看看