已经写好了一个DLL,并且编译成功了
在EXE文件里要调用那个DLL这样写可以吗?LoadLibrary((LPCTSTR)"hodll.dll"))

解决方案 »

  1.   

    DLL显示调用方法现在我们已了解DLL的使用,尚有另一种明确呼叫的方式,我们可以将前面的范例程式修改为使用明确呼叫的方法来使用 DLL。void (*ShowImage)(void); void __fastcall TForm1::ShowButtonClick(TObject *Sender) {     HINSTANCE hInst;     hInst = LoadLibrary("DLLSAMP.DLL");     (FARPROC &)ShowImage=GetProcAddress(hInst,"ShowImage");     ShowImage();     FreeLibrary(hInst); }以上就是修改後的程式,因为程式已改成明确呼叫的方式,因此不需要使用DLLSAMP.LIB了,所以关於BCB和VC所使用的LIB档格式不同的问题也不存在了。在此我简单地说明所使用的几个函式 hInst = LoadLibrary("DLLSAMP.DLL") 是用来载入DLLSAMP.DLL ,同时传回该DLL的HINSTANCE值,它是据以使用DLL的权杖。(FARPROC &)ShowImage=GetProcAddress(hInst,"ShowImage") 利用前面得到的HINSTANCE值,呼叫GetProcAddress来得到ShowImage函式的位址,因为GetProcAddress所传回的值为FARPROC ,因此我们必须做型别转换。在此我是利用 (FARPROC &) 以reference做型别转换。 FreeLibrary(hInst) 使用完後,利用FreeLibrary 将该DLL释放。 
      

  2.   

    DLL显示调用方法现在我们已了解DLL的使用,尚有另一种明确呼叫的方式,我们可以将前面的范例程式修改为使用明确呼叫的方法来使用 DLL。void (*ShowImage)(void); void __fastcall TForm1::ShowButtonClick(TObject *Sender) {     HINSTANCE hInst;     hInst = LoadLibrary("DLLSAMP.DLL");     (FARPROC &)ShowImage=GetProcAddress(hInst,"ShowImage");     ShowImage();     FreeLibrary(hInst); }以上就是修改後的程式,因为程式已改成明确呼叫的方式,因此不需要使用DLLSAMP.LIB了,所以关於BCB和VC所使用的LIB档格式不同的问题也不存在了。在此我简单地说明所使用的几个函式 hInst = LoadLibrary("DLLSAMP.DLL") 是用来载入DLLSAMP.DLL ,同时传回该DLL的HINSTANCE值,它是据以使用DLL的权杖。(FARPROC &)ShowImage=GetProcAddress(hInst,"ShowImage") 利用前面得到的HINSTANCE值,呼叫GetProcAddress来得到ShowImage函式的位址,因为GetProcAddress所传回的值为FARPROC ,因此我们必须做型别转换。在此我是利用 (FARPROC &) 以reference做型别转换。 FreeLibrary(hInst) 使用完後,利用FreeLibrary 将该DLL释放。 
      

  3.   

    HINSTANCE hInst;
    hInst=LoadLibrary("Dll3.dll");
      

  4.   

    直接显示加载LoadLibrary
    加上头文件
      

  5.   

    加上什么头文件 dll 的吗?
      

  6.   

    #import "aa.lib",需要把你的动态库头文include 近来如果不想加include ""
    你也可以动态调用  HINSTANCE hInst;
    hInst=LoadLibrary("aa.dll");FreeLibrary(hInst)
      

  7.   

    #import "aa.lib"  ???? 不需要吧