有个问题搞了半天了,还是有问题,问问看有没有有经验的人。
我有一个客户端和服务端,现在需要从客户端上传一个dll文件给服务端。
服务端接收的程序大概是这样子的:
if(fseek( file,l_nPoint,SEEK_SET ) )
{
throw std::exception("fseek file failed.");
} long l_iWriteNum = fwrite( l_pRecv,sizeof(char),l_nRecvNum,file );
fflush(file);
                fclose(file);然后,我加载dll的时候,LoadLibrary和GetProcAddress都不报错,但是GetProcAddress得到的函数地址却无法调用,try/catch也捕捉不到异常,直接报错。
我可以比较确定的是因为文件传输而引起的错误,但是不知道具体是错在什么地方。
很郁闷,请教高手呵~

解决方案 »

  1.   

    额,补充一点代码。
    FILE *file;
    if( (file  = fopen( pcFile, "wb" )) == NULL )
    {
    throw std::exception("Open file occur an error\n" );
    }
      

  2.   

    to vcPlayer:
    因为这个程序没有办法调试,我只能知道GetProcAddress返回的不是null,应该是得到了相应的函数地址。
    相关代码如下:HINSTANCE l_h;
    l_h = LoadLibrary( "testdll" );
    if((l_getFun=(GETFun)GetProcAddress(l_h,"getFun"))==0)
    {
    throw std::exception("some errMsg");
    }因为这块在服务器启动的时候也执行过一遍,所以我觉得错误应该不会在这边。
    我不知道有什么办法可以知道GetProcAddress返回的值吗?
      

  3.   

    晕,我今天怎么了,贴代码都贴不全~难道是夏天热的?
    再补充一点代码:if((m_test=l_getFun())==0)//就在这个地方报错啦
      

  4.   

    你直接把dll拷贝过去能够正确执行?
      

  5.   

    首先判断你的dll是否是可用的
      

  6.   

    dll是可用的啊,因为我一开始启动服务器的时候加载过一次了,我为了测试,从客户端传给服务器的dll跟服务器端本来的dll是一样的,但是就是加载不起来~