none
請問如何把dll檔寫成在類別底下 RRS feed

  • 問題

  • 下面的程式碼是用vc++寫成的.h檔  最終是建置成.dll
    我想問的是要怎麼樣才能把它弄成有    命名空間.類別.方法


    #include "ni845x.h"


    #ifndef I2C_PACKETTRANSPORT_H
    #define I2C_PACKETTRANSPORT_H

    #ifdef DLL_EXPORT
    #define DLLAPI __declspec(dllexport)
    #else
    #define DLLAPI __declspec(dllimport)
    #endif

    #ifdef __cplusplus
    extern "C" {
    #endif

    DLLAPI bool NI845_Init(int32 Is10Bit , int32 DEFAULT_CLOCK_RATE);
    DLLAPI bool NI845_SetAddress(int32 Is10Bit , uInt16 SlaveAddr);
    DLLAPI bool NI845_Read(int8 Command, uInt32 ByteToRead);
    DLLAPI bool NI845_Write(unsigned char TransportDataArray[],uInt32 ByteToWrite,unsigned char ReceiverDataArray[], uInt32 ByteToRead);

    #ifdef __cplusplus
    }
    #endif

    #endif

    2009年8月27日 上午 08:48

解答

  • 标准DLL的接口是C,而且要给其他语言用,所以不能用C++编译器负责解释的名称空间。你可以像Word一样用COM做接口,这样在用#import导入的时候可以指定名称空间

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已標示為解答 Lolota Lee 2009年9月2日 上午 06:18
    2009年8月27日 下午 12:21

所有回覆

  • 标准DLL的接口是C,而且要给其他语言用,所以不能用C++编译器负责解释的名称空间。你可以像Word一样用COM做接口,这样在用#import导入的时候可以指定名称空间

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已標示為解答 Lolota Lee 2009年9月2日 上午 06:18
    2009年8月27日 下午 12:21
  • 那在問一個問題
    我目前能成功在這台筆電上用vb去呼叫c++寫的dll檔  去執行
    但我把整個程式原封不動的copy到另一台電腦上確跑到要執行dll檔時
    它說無法開啟
    請問這是什麼原因
    筆電是安裝 vc2008    桌上型電腦是vc2005
    2009年8月28日 上午 06:25
  • 用dependency walker看看缺什么文件

    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年8月28日 下午 01:22
  • HI,

    您可以為應用程式製作安裝程式, 再將安裝程式拿到目標電腦安裝, 不要直接將程式COPY到目標電腦, 避免缺少DLL而執行失敗
    2009年8月28日 下午 03:14