malloc_457 2023-05-08 17:54 采纳率: 60%
浏览 18
已结题

无法解析的外部命令_imp_debug

谁能告诉我这是个啥问题啊
报错 未解析的外部符号
我感觉我的动态链接库配置的没问题啊
报错:

img


这是我的本地目录:

img


这是我的在cmd命令行模式下dumpbin命令输出的:

img


主函数:

#define BHDLL__

#include <stdio.h>
#include "SqStack.h"    //**▲03 栈和队列**//

// 测试函数,打印元素
void PrintElem(SElemType e) {
    printf("%d ", e);
}


int main() {
    SqStack S;
    int i;
    SElemType e;
    extern Boolean debug;
    
    printf("████████ 函数 InitStack \n");
    {
        printf("█ 初始化顺序栈 S ...\n");
        InitStack(&S);
    }
    PressEnterToContinue(debug);
    
    printf("████████ 函数 StackEmpty \n");
    {
        StackEmpty(S) ? printf("█ S 为空!!\n") : printf("█ S 不为空!\n");
    }
    PressEnterToContinue(debug);
    
    printf("████████ 函数 Push \n");
    {
        for(i = 1; i <= 6; i++) {
            Push(&S, 2 * i);
            printf("█ 将 \"%2d\" 压入栈 S ...\n", 2 * i);
        }
    }
    PressEnterToContinue(debug);
    
    printf("████████ 函数 StackTraverse \n");
    {
        printf("█ S 中的元素为:S = ");
        StackTraverse(S, PrintElem);
    }
    PressEnterToContinue(debug);
    
    printf("████████ 函数 StackLength \n");
    {
        i = StackLength(S);
        printf("█ S 的长度为 %d \n", i);
    }
    PressEnterToContinue(debug);
    
    printf("████████ 函数 Pop \n");
    {
        Pop(&S, &e);
        printf("█ 栈顶元素 \"%d\" 出栈...\n", e);
        printf("█ S 中的元素为:S = ");
        StackTraverse(S, PrintElem);
    }
    PressEnterToContinue(debug);
    
    printf("████████ 函数 GetTop \n");
    {
        GetTop(S, &e);
        printf("█ 栈顶元素的值为 \"%d\" \n", e);
    }
    PressEnterToContinue(debug);
    
    printf("████████ 函数 ClearStack \n");
    {
        printf("█ 清空 S 前:");
        StackEmpty(S) ? printf(" S 为空!!\n") : printf(" S 不为空!\n");
        
        ClearStack(&S);
        
        printf("█ 清空 S 后:");
        StackEmpty(S) ? printf(" S 为空!!\n") : printf(" S 不为空!\n");
    }
    PressEnterToContinue(debug);
    
    printf("████████ 函数 DestroyStack \n");
    {
        printf("█ 销毁 S 前:");
        S.base != NULL && S.top != NULL ? printf(" S 存在!\n") : printf(" S 不存在!!\n");
        
        DestroyStack(&S);
        
        printf("█ 销毁 S 后:");
        S.base != NULL && S.top != NULL ? printf(" S 存在!\n") : printf(" S 不存在!!\n");
    }
    PressEnterToContinue(debug);
    
    return 0;
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-09 08:40
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自chatgpt:

      回答:

      这个错误提示"无法解析的外部命令_imp_debug",一般来说是由于找不到某个dll库文件或者某些库文件冲突引起的。您可以尝试以下几个步骤来解决问题:

      1. 首先,您可以检查一下程序的动态链接库的依赖情况,确定是否缺少某个dll文件。您可以使用Dependence工具或者dumpbin命令行来查看动态链接库的依赖情况。比如使用以下命令行来查看程序的动态链接库:
      dumpbin /dependents your_program.exe
      
      1. 如果确定缺少某个dll文件,您可以将缺失的dll文件添加到path环境变量中。您可以在CMD命令行模式下使用set命令查看path环境变量的值:
      set path
      

      如果您想将某个dll文件添加到path环境变量中,可以使用以下命令行:

      set path=%path%;C:\path\to\your\dll\file
      

      注意,在path环境变量中添加dll文件路径时,路径的分割符是英文分号“;”。

      1. 如果您已经确定动态链接库的依赖没有问题,那么您可以考虑使用Process Monitor工具来跟踪程序运行时的文件、注册表等操作,从而找到程序出错的原因。您可以下载Process Monitor工具,然后启动程序,按照如下步骤进行设置:

      2. 在Filter菜单中选择“Filter…”选项;

      3. 在Filter对话框中设置以下两个筛选条件,然后点击Add按钮:

        • Operation:Is,Path:Ends with,Type:Load Image;
        • Operation:Is,Path:Ends with,Type:RegSetValue
      4. 点击OK关闭Filter对话框;

      5. 点击Capture菜单中的Start选项,开始跟踪程序运行时的文件、注册表等操作。

      当程序出错时,您可以查看Process Monitor的输出,查找错误信息。

      希望以上建议可以解决您的问题,如还有帮助,请随时联系我。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月9日
  • 已采纳回答 5月9日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 使用aytodl训练,希望有直接运行的代码(关键词-数据集)
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥20 设计一个二极管稳压值检测电路
  • ¥15 内网办公电脑进行向日葵
  • ¥15 如何输入双曲线的参数a然后画出双曲线?我输入处理函数加上后就没有用了,不知道怎么回事去掉后双曲线可以画出来
  • ¥50 WPF Lidgren.Network.Core2连接问题
  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M