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

  • 相关阅读:
    主键索引就是聚集索引吗?
    聚集索引以及非聚集索引
    IO阻塞模型、IO非阻塞模型、多路复用IO模型
    Log4j的使用说明
    前置机是什么
    转:图文理解区块链
    DQL、DML、DDL、DCL全名是啥?
    OLAP和OLTP的区别
    JAVA之运算符优先级
    JAVA之异常处理(一)
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/3983660.html
Copyright © 2011-2022 走看看