define AR_DLL_API __declspec(dllexport) 问题

本文探讨了LNK2001未解析外部符号错误的解决方案, 分析了可能的原因并提供了排查步骤,包括检查导出标识、使用dumpbin工具验证DLL导出及考虑编译器对函数名改编的影响。

出现如下问题时

simpleTest.obj : error LNK2001: unresolved external symbol _argMainLoop

simpleTest.obj : error LNK2001: unresolved external symbol _arVideoCapStart

首先配置没问题,也按照网上的方法处理了一下没用,最后一个函数一个函数跟踪。。

最后跟踪分析到可能是这句出了问题,dll里面导不出函数来。暂时将问题归结为这句话导致。

分析这句话:

1. 加标识符:_declspec(dllexport)。一般写在DLL应用程序源代码中,从DLL导出一些函数。例如在DLL中可以导出这样的函数(方法)

#define DLL1_API _declspec(dllexport)

DLL1_API int Add(int a,int b)
{
 return a+b;
}

当不能识别符号时,也可能是所推理的一样。但是不了解dll的问题所以先记下来。(以下从网上查找的信息)

2. 查看dll导出函数的情况:VC98\BIN目录下dumpbin.exe文件,此文件用来查看DLL文件信息。启动方法:cmd下用     dumpbin -export dll的名字    来查看

3. 推测问题所在:
C++编译器在生成DLL时,会对导出的函数进行名字改编,并且不同的编译器使用的改编规则不一样,因此改编后的名字也是不同的。这样,如果利用不同编译器分别生 DLL和访问DLL的客户端程序,后者在访问该DLL的导出函数时就会出现问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值