vc使用gcc编译的dll

本文详细阐述了在不同编译器环境下调用DLL时遇到的类导出问题,以及如何通过封装类功能为项目提供函数来解决这一难题。重点强调了统一编译器的重要性,并揭示了在使用LoadLibrary加载DLL时DLLMain函数的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你妹的情人节,今天搞了一天的dll的动态加载。

Here is the thing. 项目中我用写了一个类,GNU编译器测试可用。提交给使用类的同志时,他发现我的类在编译时有问题。就是那万恶的vc宽字符,我也懒得改了干脆商量着做成dll吧。好嘛,三下五除二,没要两分钟写了个dll出来,又写了个测试程序,同样在g++ 下测试通过。拿过去给那位同志用,怎料头疼的事情就这样开始了。类导不出来……我滴,搞了一个上午发现GNU与VC在实现Dll中的类是使用不同的策略与方式的,说白了二者不能相互调用!!!难道要我重新用VC写?肿么可能呢!好吧,我干脆用函数将类实现的主要功能封装起来,直接提供函数供项目使用。同样我还是使用GNU编译器……哭疼了,就栽在使用不同的编译器上了。在使用VC调用我写的Dll时,动态加载怎么也成功不了……经过长时间的郁闷后终于发现在使用LoadLibrary时,加载的dll一定要有dllMain函数,不然……LoadLibrary默认返回NULL!!!(因为LoadLibrary就是看DllMain的返回值返回东西,你都没有DllMain……不说了)

总结一下,一个项目中编译器最好统一!!!!不然……后果很严重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值