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

时间: 2024-10-13 13:15:54

dll开发中遇到的问题的相关文章

开发中遇到的DLL问题思考及解决方法

最近在公司写一个外壳程序,调用DLL插件把FORM嵌入到EXE中的一个PANEL中,其中遇到了不少的问题,大部分已经解决,还有几个至今没有找到解决方法,有待研究,也希望知道解决方法的富翁共享一下研究成果. 以下列出的问题及解决方法仅针对我写的程序(DLL插件把FORM嵌入到EXE中的一个PANEL中),和自己的解决方法. 从遇到的问题看出,DELPHI封装了太多的东西,有时候直接使用API会有意想不到的效果. 经验:DLL与EXE之间的通讯应该全部使用消息. 第一个问题:Tab键和Enter键在

XCode和Cocoa在开发中使用第三方dylib示例

XCode和Cocoa在开发中使用第三方dylib示例 www.educity.cn   发布者:yukowang   来源:网络转载   发布日期:2014年06月13日 XCode和Cocoa在开发中使用第三方dylib示例是本文要介绍对内容,所谓dylib,就是bsd风格的动态库.基本可以认为等价于windows的dll和linux的so.mac基于bsd,所以也使用的是 dylib. 如果你需要引用一个第三方的dylib,在xcode下编译出cocoa程序,在本机上运行是不会出问题的.但

二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baidu.com/s/1eQCc69G       前言:记得最初写出Winform版MVC的代码是在公司的一个产品中,产品有几个界面功能比较多,一个界面窗体的代码尽然有1万多行代码,让我们在维护这几个界面的时候非常的痛苦,你可能想可以把这个大的界面拆分成几个小的界面在集成在一起不就好了,但实际上这样

PHP开发中,让var_dump调试函数输出更美观 ^_^#

最近开发发现自己电脑var_dump时候没有如下效果. 果断google.百度下.^_^# 抱歉,没有找到结果.就小小的机智了下,右键查看源码,答案有了.是xdebug带来的福利. 添加xdebug方法如下: 根据自己的PHP版本去下载一个php_xdebug.dll文件. 找到php.ini文件.在末尾添加如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 ; XDEBUG Extension zend_extension = "D:/wamp/bin/php/php5.3.27

java开发中遇到的问题及解决方法(持续更新)

摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他服务和Web进行交换,Java开发必不可少,又不想动用Eclipse大家伙,只能自己动手编写脚本进行Java代码的编译和运行,期间遇到的一些问题,记录下来供自己和大家参考.1)软件包不存在/软件包 javax.jms 不存在    这是由于javac编译时找不到javax.jms所在的软件包,因此将

【Unity游戏开发】浅谈Unity游戏开发中的单元测试

一.单元测试的定义与作用 单元测试定义:单元测试在传统软件开发中是非常重要的工具,它是指对软件中的最小可测试单元进行检查和验证,一般情况下就是对代码中的一个函数去进行验证,检查它的正确性.一个单元测试是一段自动化的代码,这段代码调用被测试的工作单元,之后对这个单元的单个最终结果的某些假设进行检验.单元测试使用单元测试框架编写,并要求单元测试可靠.可读并且可维护.只要产品代码不发生变化,单元测试的结果是稳定的.(百度的) 单元测试可以让你在软件开发的早期阶段发现 Bug,而不必到集成测试的时候才发

.NET开发中常用的10条实用代码

1.读取操作系统和CLR的版本 OperatingSystem os = System.Environment.OSVersion; Console.WriteLine(“Platform: {0}”, os.Platform); Console.WriteLine(“Service Pack: {0}”, os.ServicePack); Console.WriteLine(“Version: {0}”, os.Version); Console.WriteLine(“VersionStrin

在iOS开发中,给项目添加新的.framework

首先需要了解一下iOS中静态库和动态库.framework的概念 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到

C#游戏开发中快速的游戏循环

C#游戏开发中快速的游戏循环的实现.参考<精通C#游戏编程>一书. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace GameLoop { [StructLayout(LayoutKind.Sequential)] publ