C/C++实战005:解决error LNK2001: 无法解析的外部符号

      今天在调用自己写的Dll时遇到一个问题,系统总是提示我“无法解析的外部符号”的错误提示,我写了一个调用FANUC设备的程序,用来给设备上传程序和修改参数用的,打算编译成.so放到服务器上通过python调用该程序来实现在线控制设备调参。

       为保证python能调用,所以我现在windows上进行功能的测试,这样我们就要编译dll,这时会成一个dll文件和lib文件, 通过以下方法即可调用dll中的函数。

#pragma comment(lib,"FanucNC.lib")
extern "C" __declspec(dllimport) int getLife(char* ipaddr,short code);

一开始以为是我生成的dll有问题,但是我用python调用了下可以正常获取我要的数据,所以dll应该是没问题的。

import ctypes 
llb=ctypes.cdll.LoadLibrary  
dll=llb('FanucNC.dll')
ip=bytes('10.143.60.136',encoding='utf-8')
Path=bytes('C:/Users/ICCN6079/Desktop/FanucNC/Debug/O0001.NC',encoding='utf-8')
code=500
life=dll.getLife(ip,code)
print(life)
value=dll.fanuc(ip,Path)
pyResult=ctypes.string_at(value)
print(pyResult.decode('utf-8'))

       问题还是出现调用上面了,查了很久才发现是代码输出时运行时库不一致所导致的,在项目属性中将MFC的使用库进行修改:将“在标准windows库中使用MFC“”改成“在静态库中使用MFC”,这样就不会报错了。

猜你喜欢

转载自blog.csdn.net/kevinfan2011/article/details/85096868
今日推荐