MINGW 编译错误提示从FARPROC到void的转换无效,但 MSVC 编译好

void* PluginManager::LoadLIB(const QString i_pluginname)

{

    if (i_pluginname.size() <= 0)

    {

        return NULL;

    }

    QString lib_name = M_PLUGIN_PATH+i_pluginname;

    void* libhandle = NULL;

#ifdef WIN32

    lib_name += QString(".dll");

    libhandle = LoadLibrary(lib_name.toStdWString().c_str());

#else

    lib_name += QString(".so");

    libhandle = dlopen(lib_name.toStdString().c_str(), RTLD_LAZY);

#endif

    return libhandle;

}

 

void* PluginManager::GetSymbolAddress(const void *i_libhandle,const QString i_symbolname) const

{

    void* pSymbol = NULL;

#ifdef WIN32

    if (i_libhandle != NULL)

    {

        pSymbol = GetProcAddress((HMODULE)i_libhandle,  i_symbolname.toStdString().c_str());[W用1]

    }

#else

    if (i_libhandle != NULL)

        pSymbol = dlsym(i_libhandle, i_symbolname.toStdString().c_str());

    }

#endif

    return pSymbol;

}


 [W用1]编译到下划线标注的那句是的时候,就报了如下错误

error: invalid conversion from 'FARPROC {aka int (__attribute__((__stdcall__)) *)()}' to 'void*' [-fpermissive]

         pSymbol = GetProcAddress((HMODULE)i_libhandle, i_symbolname.toStdString().c_str());

原因分析:mingw编译不允许进行隐式转换

解决方法:

pSymbol = (void*)GetProcAddress((HMODULE)i_libhandle, i_symbolname.toStdString().c_str());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值