zoukankan      html  css  js  c++  java
  • QT下调用DLL出现LNK2019问题的解决

    在QT下完成了DLL,并建立了测试程序进行了验证,一切正常。但想到未来可能要在C#中调用,则希望将导出的文件名设置成原名,所以对每个引出的函数加上 extern "C" 前缀。DLL编译通过,但测试程序则报告LNK2019错误,找不到当初已经测试过的所有导出函数。去掉extern "C" 前缀,编译又恢复正常,这下有点懵。

    检查项目设置,发现构建设置中的构建目录有提示,大意是希望把编译的目的目录应当放在源项目目录下,且发现测试程序和DLL的Makefile有互相覆盖的提示。

    推测是编译目标目录设置的问题,原来为了方便,将测试程序的目标目录设置在了DLL的目标目录中,这可能是问题的所在。

    将测试程序的编译目标目录改回到源项目目录下,然后将DLL及其lib文件拷贝到该目录下,然后编译通过。

    总结:为了方便将测试程序的编译目标目录设置成了DLL的目标目录,导致了测试程序无法找到带有extern "C" 前缀的DLL导出函数,具体原因不太清楚。但教训是各个项目最好是使用项目设置缺省的编译目标目录,然后需要的话可以用编译脚本将DLL和lib文件拷贝到可执行文件的目录中。

    但是,后来发现原因可能不是这样的,我将所有DLL项目的目标目录设为可执行文件的目录中,则通过了。其原因不太明白

  • 相关阅读:
    weblogic 反序列化补丁绕过漏洞的一个批量检测shell脚本(CVE-2017-3248 )
    【转】常用端口服务
    【转】服务器解析漏洞
    针对Web的信息搜集
    Kali Linux安装AWVS漏扫工具
    PowerShell 反弹渗透技巧
    ShellCode 最小化编译优化
    Ansible 自动化学习笔记(精简)
    基于白名单的Payload
    社工工具包 SEToolkit
  • 原文地址:https://www.cnblogs.com/myboat/p/14048920.html
Copyright © 2011-2022 走看看