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函数的返回值就会有问题。个人表示很不解,目前也不知是何原因,先放在这里吧。如果有哪位大神看到了还请赐教。

原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/3983660.html