菜鸟再问:dll传递链表不能成功?(在线等待,请多加赐教!)
dll档里 定义了一个:
struct my
{
int k;
struct my *Next;
};
声明是这样的
extern "C" __declspec(dllexport) void __stdcall GetValue(my *head);
void __stdcall GetValue(my *head)
{
.....
}
然后在主程序里定义了相同的结构,然后调用:
my *head;//全局变量
HINSTANCE ins;
typedef void (__stdcall * s)(my*);
ins = LoadLibrary("bstkread.dll");
s sl=(s)GetProcAddress(ins,"GetValue");
sl(head);
不成功,head的值为NULL。
问题点数:100、回复次数:7Top
1 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-02 19:53:37 得分 100
不是dll的问题,是最基本的传值问题
如:
void f(char *p){
p = new char[10];
strcpy(p,"kingfish");
}
测试:
char *p = NULL;
f(p);
if(p==NULL) ShowMessage("p not changed");Top
2 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-02 19:58:11 得分 0
可以通过传引用或者return方式解决
如
void __stdcall GetValue(my *&head)
{
}
or
my* __stdcall GetValue()
{
return p;
}
Top
3 楼13661023811(苯苯)回复于 2005-04-02 20:09:42 得分 0
太感谢了,好感动啊,我先试试!!!Top
4 楼blow_jj(阿俊)回复于 2005-04-02 21:16:13 得分 0
返回一个地址虽然会替使你不安全
但是确实可以得到你要的效果
Top
5 楼13661023811(苯苯)回复于 2005-04-03 19:00:16 得分 0
"返回一个地址虽然会替使你不安全
但是确实可以得到你要的效果"
为什么?我不是很了解,DLL和调用者不是在同一地址空间吗?
Top
6 楼suny803(惊虹飞雪)回复于 2005-04-03 19:18:36 得分 0
learningTop
7 楼13661023811(苯苯)回复于 2005-04-05 12:21:44 得分 0
自己顶一下,我实在搞不清楚,虽然问题已解决。Top




