itisue 2023-01-09 15:27 采纳率: 62.5%
浏览 67
已结题

为什么会发生应用程序无法启动的情况?

我把一个exe程序改写成了dll(我在VS中将输出改成了dll,并且把主函数改成了借口也导出了),然后用一个exe去调用dll为啥会报错?

img


就是说,如果不屏蔽的话,会变成导入,这是为什么?

img


这是实现。
错误如下

img

  • 写回答

7条回答 默认 最新

  • Marco119 2023-01-10 00:12
    关注

    可能是因为你在将 exe 改写成 dll 的过程中,没有正确处理好 exe 中的入口函数和 dll 中的导出函数。

    在 exe 中,入口函数一般是 main 或者 wmain,而在 dll 中,你需要把主函数改写成一个导出函数,并使用 __declspec(dllexport) 来导出。

    例如:

    // exe 中的入口函数
    int main(int argc, char* argv[])
    {
    // 其他代码
    return 0;
    }

    // dll 中的导出函数
    __declspec(dllexport) int main(int argc, char* argv[])
    {
    // 其他代码
    return 0;
    }

    如果你的 exe 中有多个入口函数,则需要把所有入口函数都改写成导出函数。

    另外,你还需要注意 dll 的命名规范,比如说 dll 的文件名、函数名和符号名等。

    如果你还是遇到了问题,可以尝试使用 Dependency Walker 工具来检查 dll 和 exe 的依赖关系,帮助你找到问题的原因。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月9日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口