首页 > 其他 > 详细

dll开发中遇到的问题

时间:2014-09-20 20:51:50      阅读:342      评论:0      收藏:0      [点我收藏+]

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

dll开发中遇到的问题

原文:http://www.cnblogs.com/zhaoxinshanwei/p/3983660.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!