c语言调用dll里的命令并输出

#include <WINDOWS.H>
#include <WINBASE.H>
typedef void (*MYPROC)(char*);

void main(){
HINSTANCE LibHandle;
MYPROC ProcAdd;
char sysbuf[] = "GetNum"; /*过程名*/

LibHandle = LoadLibrary("GetNum.dll"); /*载入dll*/

ProcAdd = (MYPROC)GetProcAddress(
LibHandle, sysbuf); /*获取函数sysbuf的地址*/

}
我有一个dll文件叫GetNum.dll,里面有个命令GetNum,怎样输出这个命令的结果

根据我的猜测,有两种情况
1.如果 void GetNum(char* s);是把输入的字符储存在 *s中的话:
#include <WINDOWS.H>    
#include <WINBASE.H>
#include <stdio.h>    
typedef void (*MYPROC)(char*); /* 这里要与GetNum的返回值和参数 对应 */
void main(){
   HINSTANCE LibHandle;
   MYPROC ProcAdd; 
   char ch;    
   char sysbuf[] = "GetNum";   /*过程名*/
   LibHandle = LoadLibrary("GetNum.dll"); /*载入dll*/ 
   
   ProcAdd = (MYPROC)GetProcAddress(   
   LibHandle, sysbuf);   /*获取函数sysbuf的地址*/
   ProcAdd(&ch);    
   printf("%c\n",ch);
}


2.如果你的GetNum是
int GetNum(char* s)
{
    int i=0,ans=0;
    while(s[i]>='0'&&s[i]<='9')
    {
        ans=s[i]-'0'+ans*10;
    }
    return ans;
}

#include <WINDOWS.H>    
#include <WINBASE.H>
#include <stdio.h>    
typedef int  (*MYPROC)(char*);           /*   改 */
void main(){
   HINSTANCE LibHandle;
   MYPROC ProcAdd; 
   char s[100];                        /*   改 */
   char sysbuf[] = "GetNum";   /*过程名*/
   LibHandle = LoadLibrary("GetNum.dll"); /*载入dll*/ 
   
   ProcAdd = (MYPROC)GetProcAddress(   
   LibHandle, sysbuf);   /*获取函数sysbuf的地址*/
   scanf("%s",s);                    /*   改 */
   printf("%d\n", ProcAdd(&s) );        /* 这里调用 并输出结果 */
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-31
GetNum.dll只是一个链接库,,你只能调用接口函数。看来你还不懂怎么调用动态链接库
第2个回答  2013-08-31
(*ProcAdd)("string");

函数指针的一个应用而已追问

都没有输出

追答

你知道 函数GetNum是干嘛用的?

为什么要有输出呢?

追问

函数GetNum得到一个数字,我想输出它

追答

typedef void (*MYPROC)(char*);

改成typedef int (*MYPROC)(char*);

int x=(*ProcAdd)(参数);

printf("%d",x);

我100%肯定,上述代码不是你自己写的

追问

是的,改成c++版本要怎样改

追答

C跟C++有区别吗?

相似回答