我做了一个vb调用vc制作的dll程序vc的程序需要用到一个lib文件
在vc里面link成功,dll编译成功
vb调用的时候,提示找不到dll文件
如果把vc里面用到的lib的函数去掉,就能调用成功这是怎么回事儿呢?怎么改,谢谢了!!!

解决方案 »

  1.   

    你看你VC的dll写正确了没?仔细看一下!
      

  2.   

    vc 的dll
    看一个函数就行了
    这里面有一个nmdi.lib
    我给连接进来了
    里面有些函数是从这个lib里面调用的
    如果把这些函数去掉就好用
    要不就不好用 # include <windows.h>
    # include <stdio.h>
    # include <stdlib.h>
    # include <process.h>
    # include <ctype.h>
    # include   <nmdi.h>
    # include "tuushinn.h" /* DINA 捠怣儔僀僽儔儕傪巊梡偡傞偲偒偵偼丄
    僿僢僟 僼傽僀儖 nmdi.h 傪僀儞僋儖乕僪偡傞
    昁梫偑偁傝傑偡丅 *//* 偙偺僾儘僌儔儉偱偼師偺僷儔儊乕僞傪屌掕偵帩偭偰偄傑偡丅 */# define LU_NO 0x28 /* 帺嬊懁 LU 斣崋 */
    # define IS_PARAMETER "APPL=ATSS" /* INIT-SELF 偺僷儔儊乕僞 */
    # define TS_PARAMETER "" /* TERM-SELF 偺僷儔儊乕僞 */HANDLE  stop_event; /* NMD_Receive 張棟愱梡僗儗僢僪偐傜偺捠抦梡
    僀儀儞僩偺僴儞僪儖 */
    HANDLE  session; /* 僙僢僔儑儞 僴儞僪儖 */char *tmpmsg;
    int int_ret;
    char *tmperrmsg;
    char *tmpemsg;
    char RetData[170];
    char RetMsg[100];
    void CreFile();int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved) 

         return TRUE ; 

    __stdcall CALLBACK int DennBun(char* inmsg,int inlen,int outlen)
    {
    CreFile();
    return 0;
    /* void  child(void *);
    char  *rsc_name;
    NMD_RESULT  result;
    NMD_DATA_ATTR  attr;
    NMD_RSP  rsp;
    static char  buffer[4096];
    int  ret_value;
    DWORD flag;
    char *msg;
    char *errmsg;
    int_ret = 0;
    memset(&msg, 0, sizeof(msg));
    stop_event = CreateEvent(NULL, TRUE, FALSE, NULL);// rsc_name = argv[1]; ????
    memset(&rsc_name, 0, sizeof(rsc_name));
    strcpy(rsc_name,"HOST1");
    memset(&result, 0, sizeof(NMD_RESULT)); session = NMD_Open(rsc_name, NMD_APTYPE_USERAP, LU_NO, NULL, &result);
    if (session == NULL) {
    strcpy(errmsg,NMD_StrError(result.status, NULL));
    return -1;
    exit(1);
    }
    if (result.status == NMD_PROT_DINA) {
    flag = NMD_PROT_DINA; strcpy(buffer, IS_PARAMETER);
    memset(&attr, 0, sizeof(NMD_DATA_ATTR));
    attr.command = NMD_CMD_INIT_SELF;
    attr.key = NMD_KEY_EMI;
    memset(&rsp, 0, sizeof(NMD_RSP));
    memset(&result, 0, sizeof(NMD_RESULT));
    ret_value = NMD_Send(session, buffer, strlen(buffer), &attr, &rsp,
    NULL, &result);
    if (ret_value < 0) {
    if (ret_value != -3) {
    strcpy(errmsg, NMD_StrError(result.status, NULL));
    } else {
    strcpy(errmsg,"-RSP 棟桼僐乕僪: ");
    sprintf(msg, "%d", rsp.reason); 
    strcat(errmsg,msg);
    strcat(errmsg,"僨乕僞丗");
    sprintf(msg, "%d", rsp.code); 
    strcat(errmsg,msg);
    strcpy(tmperrmsg,errmsg);
    int_ret = -1;
    }
    goto Close_And_Exit;
    }
    } _beginthread(child, 0, NULL);
    while (WaitForSingleObject(stop_event, 0) == WAIT_TIMEOUT) { //fgets(buffer, sizeof(buffer), inmsg);
    strncpy(buffer,inmsg,inlen);
    if (strlen(buffer) == 0)
    continue;
    memset(&attr, 0, sizeof(NMD_DATA_ATTR));
    attr.command = NMD_CMD_DATA;
    attr.key = NMD_KEY_EMI;
    memset(&rsp, 0, sizeof(NMD_RSP));
    memset(&result, 0, sizeof(NMD_RESULT));

    ret_value = NMD_Send(session, buffer, strlen(buffer) - 1, &attr, &rsp,
    NULL, &result);
    if (ret_value < 0) {
    if (ret_value != -3) {
    strcpy(errmsg, NMD_StrError(result.status, NULL));
    } else {
    strcpy(errmsg,"-RSP 棟桼僐乕僪: ");
    sprintf(msg,"%d",rsp.reason);
    strcat(errmsg,msg);
    strcat(errmsg,"僨乕僞丗");
    sprintf(msg,"%d",rsp.code);
    strcat(errmsg,msg);
    strcpy(tmperrmsg,errmsg);
    int_ret = -1;
    }

    }
    if (flag == NMD_PROT_DINA) { strcpy(buffer, TS_PARAMETER);
    memset(&attr, 0, sizeof(NMD_DATA_ATTR));
    attr.command = NMD_CMD_TERM_SELF;
    attr.key = NMD_KEY_EMI;
    memset(&rsp, 0, sizeof(NMD_RSP));
    memset(&result, 0, sizeof(NMD_RESULT)); ret_value = NMD_Send(session, buffer, strlen(buffer), &attr, &rsp,
    NULL, &result);
    if (ret_value < 0) {
    if (ret_value != -3) {
    strcpy(errmsg, NMD_StrError(result.status, NULL));
    } else {
    strcpy(errmsg,"-RSP 棟桼僐乕僪: ");
    sprintf(msg,"%d",rsp.reason);
    strcat(errmsg,msg);
    strcat(errmsg,"僨乕僞丗");
    sprintf(msg,"%d",rsp.code);
    strcat(errmsg,msg);
    strcpy(tmperrmsg,errmsg);
    int_ret = -1;
    }
    goto Close_And_Exit;
    }
    }Close_And_Exit:
    memset(&result, 0, sizeof(NMD_RESULT));
    NMD_Close(session, NULL, &result);
    //strncpy(outmsg,tmpmsg,outlen);
    CreFile();
    CloseHandle(stop_event);
    */
    return int_ret;
    }void  child(void *tmp)
    {
    NMD_DATA_ATTR  attr; /* 庴怣僨乕僞偺懏惈忣曬 */
    NMD_RESULT  result; /* 張棟寢壥傪奿擺偡傞峔憿懱 */
    static char  buffer[4096]; /* 庴怣僨乕僞梡僶僢僼傽 */
    int  ret_value; /* 栠傝抣 */
    // FILE  *fp; /* 寢壥傪彂偒崬傓僼傽僀儖 */ while (WaitForSingleObject(stop_event, 0) == WAIT_TIMEOUT) {
    memset(&attr, 0, sizeof(NMD_DATA_ATTR));
    memset(&result, 0, sizeof(NMD_RESULT)); ret_value = NMD_Receive(session, buffer, sizeof(buffer), &attr,
    NULL, NULL, &result);
    // fputc('\a', stdout);
    // fp = fopen("receive.txt", "a");
    // fputc('\n', fp);
    if (ret_value < 0) {
    strcpy(tmperrmsg,"捠怣僄儔乕僐乕僪: ");
    sprintf(tmpemsg,"%d",result.status);
    strcat(tmperrmsg,tmpemsg);
    strcat(tmperrmsg,"儊僢僙乕僕:");
    // sprintf(tmpemsg,"%d",NMD_StrError(result.status, NULL));
    strcat(tmperrmsg,tmpemsg);
    int_ret = -1;
    break;
    }
    switch (attr.command) {
    case NMD_CMD_DATA:
    strcpy(tmperrmsg, "僨乕僞傪庴怣偟傑偟偨丅\n");
    break;
    case NMD_CMD_ACTIVE:
    strcpy(tmperrmsg, "捠怣壜擻捠抦傪庴怣偟傑偟偨丅\n");
    break;
    case NMD_CMD_INACTIVE:
    strcpy(tmperrmsg, "捠怣晄壜捠抦傪庴怣偟傑偟偨丅\n");
    break;
    case NMD_CMD_CANCEL:
    strcpy(tmperrmsg, "CANCEL 傪庴怣偟傑偟偨丅\n");
    break;
    case NMD_CMD_NSPE:
    strcpy(tmperrmsg, "NSPE 傪庴怣偟傑偟偨丅\n");
    break;
    case NMD_CMD_SIGNAL:
    strcpy(tmperrmsg, "SIGNAL 傪庴怣偟傑偟偨丅\n");
    break;
    }
    if (ret_value) {
    strcpy(tmpmsg,buffer);
    /* int  i, j; fprintf(fp, "庴怣撪梕:\n");
    for (i = 0;  i < ret_value;  i += 16) {
    fprintf(fp, "%08x  ", i);
    for (j = 0;  j < 16 && i + j < ret_value;  ++j)
    fprintf(fp, "%02x ", (unsigned)buffer[i + j]);
    for (;  j < 16;  ++j)
    fprintf(fp, "   ");
    printf(" ");
    for (j = 0;  j < 16 && i + j < ret_value;  ++j)
    fputc((isprint(buffer[i + j]) ? buffer[i + j] : '.'),
    fp);
    for (;  j < 16;  ++j)
    fputc(' ', fp);
    fputc('\n', fp);
    }*/ }
    // fclose(fp);
    if (attr.command == NMD_CMD_INACTIVE)
    break;
    }
    SetEvent(stop_event);
    _endthread();
    }void CreFile()
    {
    FILE *fp;
    //曉怣僼傽僀儖
    if((fp=fopen("d:\\Data.txt","a"))==NULL)
    { exit(1);
    }
    strcpy(RetData,"");
    // strcpy(RetData,tmpmsg);
    strcpy(RetData,"2134123483210948912385-12850185910285akgjalskjdgkaljdg023485093248590");
    //儊僢僙乕僕僼傽僀儖
    fputs(RetData,fp); fclose(fp);
    if((fp=fopen("d:\\Msg.txt","a"))==NULL)
    { exit(1);
    }
    strcpy(RetMsg,"");
    // strcpy(RetMsg,tmperrmsg);

    strcpy(RetMsg,"msgmsgmsgmsgmsgmsgmsgmsg");
    fputs(RetMsg,fp);
    fclose(fp);}
      

  3.   

    lib文件只是提供一些符号的描述,你编译后的dll在使用时还是需要那个nmdi.dll的。所以,要解决你的问题,只需将nmdi.dll和你的其他dll放一起即可