Importando funções embutidas no MinGW

Estou usando uma biblioteca compartilhada que define funções embutidas em seu cabeçalho.

Aqui está um caso de teste reduzido, como visto pela unidade de compilação que liga à biblioteca (para a versão vista pela biblioteca, basta substituirdllimport pordllexport).

class __declspec(dllimport) MyClass {
public:
    int myFunc2();
    int myFunc1();
};

inline int MyClass::myFunc2(void) {
    return myFunc1();
}

inline int MyClass::myFunc1(void) {
    return 0;
}

Compilar isso dá o aviso:

aviso: 'int MyClass :: myFunc1 ()' redeclarado sem atributo dllimport depois de ser referenciado com dll linkage [ativado por padrão]

Por favor, note que a ordem em que as funções são definidas é importante, como colocar a definição demyFunc1 antes da definição demyFunc2 resulta em nenhum aviso.

Observe também que esse código compila sem avisos no Visual C ++. Estes avisos são específicos, pelo menos, ao MinGW, talvez ao GCC em geral. Edit: veio-me à mente que eu possa ter que verificar se o aviso não é inibido por um dos sinalizadores definidos pelo projeto.

Minhas perguntas são então:

Por que esse comportamento?DeclarandomyFunc1 Comoinline dentro da declaração de classe corrige o problema. Por que é que ? É também contra omaneira recomendada de fazer as coisas.Existe outra (melhor?) Maneira de corrigir esse problema?

questionAnswers(2)

yourAnswerToTheQuestion