在程序中我需要使用LoadLibrary函数来调用DLL文件,但是发现只有DLL文件和程序的.exe文件在通一个目录下才可以,不知道是为什么,有什么办法可以做到让它们不在同一目录下页可以使用呢????

解决方案 »

  1.   

    放系统目录(如c:/winnt/system)下
    LoadLibrary 文件名使用相对或者绝对路径
      

  2.   

    但是好像不行啊
    我用LoadLibrary("d:\\a\d.dll")he 程序不在一个目录下就是不可以啊
    是不是可以用什么设置路径的啊,能详细的说说么.谢谢了
      

  3.   

    最好打包放到SYSTEM目录中,这样好些,放在自己目录中也可以!!不要在LOADLIBRARY中用路径
      

  4.   

    “LoadLibrary("d:\\a\\d.dll")”这样不可以吗?
      

  5.   

    hDLL = LoadLibrary("G:\\chm\\ExplicitDLL.dll"); 我这样写没问题,可以调用
      

  6.   

    对不起各位是小弟没把问题说清楚。是这样的:
    有文件a。exe;b。dll;c。dll,b。dll是要调用c。dll的,然后三个文件不在同一个目录下。在a。 exe中利用LoadLibrary 函数调用b。dll,不能成功的调用。如果他们在同一目录就可以成功,现在不知道怎么解决不在同一目录下的调用问题。急啊。各位帮忙了
      

  7.   

    多半是A调B时,B需要调C,而B.dll的作者是使用相对路径调用c.dll的,所以产生你的问题.如果你没有修改b.dll的权力的话,就只能按b.dll的作者意图办了.
      

  8.   

    Project->setting->link 下的Object/library modules:里输入要包含的lib文件
    tool的option的Directories里设置路径
      

  9.   

    protected:
    HINSTANCE hInstance;//  导入DLL
    void CDatabase::LoadDll(CString appPath)
    {
    char DllPath[MAX_PATH]; memset(DllPath, 0, MAX_PATH);
    sprintf(DllPath, "%s\\DLL\\DataBase_API.dll", appPath);
    VERIFY(hInstance=::LoadLibrary(DllPath));
    }// 调用函数DB_PB_SearchRecordbyData
    int CDatabase::DB_PB_SearchRecordbyData(char * pContent)
    {
    int iRet; typedef int (far pascal * SQRTPROC)(char *); SQRTPROC pFunction;
    VERIFY(pFunction=(SQRTPROC)::GetProcAddress(hInstance,"DB_PB_SearchRecordbyData"));
        
    iRet = pFunction(pContent); return iRet;
    }
    appPath作为路径传入