| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1503 人关注过本帖
标题:[求助]在写DLL时,如何使一个函数即可以在DLL内部被调用,又可以将其导出?
只看楼主 加入收藏
甲壳虫
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2005-8-1
收藏
 问题点数:0 回复次数:6 
[求助]在写DLL时,如何使一个函数即可以在DLL内部被调用,又可以将其导出?
在写DLL时,如何使一个函数即可以在DLL内部被调用,又可以将其导出?高手知道说一下
搜索更多相关主题的帖子: DLL 函数 
2006-02-08 17:22
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
你的意思是要把.dll文件打开吗?好像有专门的软件,但是我不知道,有这个必要吗?

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2006-02-08 17:46
甲壳虫
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2005-8-1
收藏
得分:0 

不是的,就比如这样:

DLL里的有这样两个函数:
int add(int a, int b)
{
.......
sub(c,d);
........
}

int sub(int c,int d)
{
........
}


而在要导出的函数中都有
add
sub
//sub即可以在DLL内部让add使用,又可以和add一起导出给.exe使用,
我在VC中,做不了,如果要导出,内部就不能调用,我觉得应该有这个功能,但找不到

[此贴子已经被作者于2006-2-8 17:59:43编辑过]


我一直在努力......
2006-02-08 17:59
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 

好像不能吧,可能是因为类的缘故


本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2006-02-08 18:23
甲壳虫
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2005-8-1
收藏
得分:0 

哦,那只能另找办法了,谢谢版主热心帮助


我一直在努力......
2006-02-08 19:07
甲壳虫
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2005-8-1
收藏
得分:0 

经过多次验证,在VC中 ,如下程序在无论MFC DLL下,还是非MFC DLL下都是可行的,
都可以导出正确的 add和sub函数
_______dll.edf文件______
EXPORTS
add
sub

_______dll.h文件_________
extern int __declspec(dllexport)add(int,int);
extern int __declspec(dllexport)sub(int,int);

_______dll.cpp文件_______
#include"dll.h"
int add(int a,int b)
{
return sub(a,b)+b;
}

int sub(int a,int b)
{
return a-b;
}

问题在于如果把int 换成CString,虽然可以正确生成dll,导出函数
但存在两方面问题
1.如果CString 对象参与了运算,在exe使用时就一定会发生错误报告;
如:就连这个简单的函数也不行
CString outself(CString szText)
{
return szText;
}//其为DLL内要导出的函数

2.如果CString 对象没有参与运算,当函数返回类型为CString 时,返回一定要
大于等于两个字节
如:
CString out()
{
return "w";
}//在exe使用中就会发生错误报告


CString out()
{
return "ww";
}//不会发生错误报告

鄙人刚学,弄了一整天,百思不得解,是不是我在写DLL时别的代码没有完整所致,真不知道是什么回事?望高手指点


我一直在努力......
2006-02-09 01:25
冰镇柠檬汁儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:北京
等 级:版主
威 望:120
帖 子:8078
专家分:6657
注 册:2005-11-7
收藏
得分:0 
用String型可以吗?

本来无一物,何处惹尘埃
It is empty at all here, Why pm 2.5 is so TMD high!
2006-02-09 08:29
快速回复:[求助]在写DLL时,如何使一个函数即可以在DLL内部被调用,又可以将其导 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030802 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved