【问题标题】:Error following simple c++ DLL tutorial with mingw使用 mingw 遵循简单的 c++ DLL 教程时出错
【发布时间】:2019-11-20 22:25:17
【问题描述】:

我正在关注https://cygwin.com/cygwin-ug-net/dll.html 的“构建和使用 DLL”教程。 我已经制作了 mydll.cpp 文件:

#include <iostream>

void hello()
{
    std::cout << "Hello World of DLL" << std::endl;
}

编译并链接它:

g++ -c mydll.cpp
g++ -shared -o mydll.dll mydll.o

然后尝试在 main.cpp 中使用 hello() 函数:

int main ()
{
  hello ();
}  

g++ -o main main.cpp -L./ -l mydll链接后得到:

 error: 'hello' was not declared in this scope
 hello();

本教程指出一切都应该正常工作。我错过了什么?

【问题讨论】:

    标签: c++ gcc dll mingw dllimport


    【解决方案1】:

    链接过程与编译过程是分开的。您提供的库包含链接过程中使用的hello 的编译定义。

    但是在链接之前发生的编译过程中,不会以任何方式使用库。为了让编译器知道hello 是什么,您仍然需要声明该函数。

    这通常通过在main.cppmydll.cpp 共享的头文件中放置一个前向声明来完成。

    // mydll.h
    
    #ifndef HEADER_GUARD_MYDLL_H
    #define HEADER_GUARD_MYDLL_H
    
    void hello();
    
    #endif
    

    然后在main.cppmydll.cpp 中输入#include "mydll.h"

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 2018-03-14
      • 2018-08-14
      • 2014-12-17
      相关资源
      最近更新 更多