C++ DLL编程时报错:无法解析的外部符号

问题: 1 error LNK2001: 无法解析的外部符号 _xMonitorFromPoint@12 e:\visual studio 2010\Projects\myTest\ModifyResolutionC\ModifyResolutionC\modifyResolution.obj ModifyResolutionC;错误 2 error LNK1120: 1 个无法解析的外部命令 e:\visual studio 2010\Projects\myTest\ModifyResolutionC\Debug\ModifyResolutionC.dll 1 1 ModifyResolutionC

源文件:

ModifyResolutionC.h:

#ifndef FIRSTDLL_H

#define FIRSTDLL_H

#ifdef DLLEXPORT

#define DLLOPTION _declspec(dllexport) //表明标有此宏定义的函数和类是dll文件的导出函数和类,是dll文件的对外接口

#else

#define DLLOPTION _declspec(dllimport) //表明标有此宏定义的函数和类的定义在dll文件中

#endif


extern "C" DLLOPTION char* getResolution(); 

#endif

ModifyResolutionC.cpp:

#include <iostream>

#define DLLEXPORT                    //定义了预处理器变量 DLLEXPORT

#include "modifyResolution.h"
#include <windows.h>
#include "multimon.h" 
#include <string.h>
#include <Winuser.h>



using namespace std;

char* getResolution(){
	POINT p;
	p.x = 23;
	p.y =23;
	HMONITOR h = MonitorFromPoint(p,MONITOR_DEFAULTTONULL);
	return reinterpret_cast<char*>(h);//转换为char*

}

MonitorFromPoint的功能参见:https://msdn.microsoft.com/en-us/library/dd145062(VS.85).aspx

此代码确认坐标是否在显示器上存在。


解决问题:

在网上也搜了很多,很多人说的是没有lib库,按照百度经验上去寻找依赖项http://jingyan.baidu.com/article/4d58d54135d7a79dd4e9c0ad.html,发现我用的user.lib是存在于依赖库中的。http://www.cnblogs.com/hiloves/p/4678848.html这篇文字还采取了恨铁不成钢的教育形式说是C和C++混编造成的,按照他的意思修改错误更多。后来想是不是在引入头文件中有多余的并没有依赖项,所以注销了多余引用的头文件:

#include "modifyResolution.h"
#include <windows.h>
//#include "multimon.h" //注销项
#include <string.h>
#include <Winuser.h>
编译通过,在java中调用C++产生的dll文件成功。




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值