VC常见问题(.obj : error LNK2019、fatal error C1083、编译64位Detours)

news2024/11/14 21:41:08

VC常用问题

    • VC常见问题
      • *.obj : error LNK2019: 无法解析的外部符号 __imp_FindWindow ,该符号在函数 @@YA
    • Windows环境下用nmake编译常见问题
      • fatal error C1083: 无法打开包括文件:“excpt.h”
      • vs2012编译64位Detours(其他vs版本同理)
      • vs项目设置选项
      • 编译使用了Detours库的项目报错fatal error C1189


VC常见问题

*.obj : error LNK2019: 无法解析的外部符号 __imp_FindWindow ,该符号在函数 @@YA

解决方法1:#pragma comment(lib,"User32.lib")
解决方法2:项目属性、链接器、输入、附加依赖项,填写User32.lib即可。


Windows环境下用nmake编译常见问题

fatal error C1083: 无法打开包括文件:“excpt.h”

在编译Detours4.0的时候,nmake提示错误:
Windows Kits\8.0\include\um\windows.h fatal error C1083: 无法打开包括文件:“excpt.h”,找不到相关头文件。

解决方法1:设置头文件搜索路径(少啥添啥)

在这里插入图片描述
该方法最实用,少INCLUDE文件你搜到后,就将该文件所在的目录添加到系统环境变量INCLUDE里面,少LIB文件你就将它的目录添加到系统环境变量LIB里面,少了添啥。


解决方法2(如果头文件不在VC目录下面的话,就以上面的方法1为主):

打开cmd命令控制台,找到vcvars32.bat所在路径,例如:D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin,运行该批处理文件;

或者运行vcvarsall.bat文件:

cd D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
vcvarsall.bat

参考链接:
Windows环境下用nmake编译libevent

nmake编译libraw


vs2012编译64位Detours(其他vs版本同理)

1、下载地址
https://github.com/Microsoft/Detours
2、解压后,将system.mak和src目录拷贝到Visual Studio 11目录的VC目录下,并将src目录下的Makefile文件的只读属性去掉,然后打开Makefile文件进行如下修改:

CFLAGS=/nologo /W4 /WX- /we4777 /we4800 /Zi /MT /Gy /Gm- /Zl /Od /DDETOUR_DEBUG=$(DETOURS_DEBUG)

将上述选项中的/WX修改为/WX-,/WX 是警告被视为错误,而 /WX- 是警告不被视为错误。

3、右键以管理员模式运行VS2012 x64 Native Tools Command Prompt:

在这里插入图片描述

cd D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
d:
cd src
nmake

在这里插入图片描述
在这里插入图片描述
detours.lib生成成功,并会自动将detours.h、detver.h拷贝到D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC目录中的include目录中,这样就可以在你项目.cpp中直接引用detours.h头文件。


vs项目设置选项

D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC目录下编译生成的库目录lib.X64拷贝粘贴到你的项目目录中,并设置你的项目属性:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
detours4.0.1x64.lb是我

#include <windows.h>
#include "detours.h"
#include "detoursHookApi.h"

BOOL HookApi(PVOID *oldApi/*要HOOK的地址 变量*/, PVOID newApi/*新的函数地址*/)
{
	BOOL br = FALSE;
	DetourRestoreAfterWith();	//恢复原来状态
	DetourTransactionBegin();	//拦截开始
	DetourUpdateThread(GetCurrentThread());	//刷新当前线程

	//这里可以连续多次调用DetourAttach,表示HOOK多个函数
	//DetourAttach(&(PVOID&)OldCreateMutexA, NewCreateMutexA);
	DetourAttach(oldApi, newApi);
	//br返回NO_ERROR 表示成功
	br=DetourTransactionCommit();	//让拦截生效
	if(br == NO_ERROR)
	{
		br = TRUE;
	}
	else
	{
		br = FALSE;
	}

	return br;
}

BOOL UnHookApi(PVOID *oldApi, PVOID newApi)
{
	BOOL br = FALSE;
	DetourTransactionBegin();	//拦截开始
	DetourUpdateThread(GetCurrentThread());	//刷新当前线程

	//这里可以连续多次调用DetourAttach,表示撤销多个函数HOOK
	//DetourAttach(&(PVOID&)OldCreateMutexA, NewCreateMutexA);
	DetourDetach(oldApi, newApi);	//卸载HOOK
	//br返回NO_ERROR 表示成功
	br=DetourTransactionCommit();	//HOOK生效
	if(br == NO_ERROR)
	{
		br = TRUE;
	}
	else
	{
		br = FALSE;
	}

	return br;
}

编译使用了Detours库的项目报错fatal error C1189

fatal error C1189: #error : Unknown architecture (x86, amd64, ia64, arm, arm64)
在vs中编译使用了Detours库的项目时,报上述错误。
解决方法:
在include "detours.h"之前要先包含windows.h头文件,即:

#include <windows.h>
#include "detours.h"
#include "detoursHookApi.h"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/400239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java基础面试题(三)

Java基础面试题 一、JavaWeb专题 1.HTTP响应码有哪些 1、1xx&#xff08;临时响应&#xff09; 2、2xx&#xff08;成功&#xff09; 3、3xx&#xff08;重定向&#xff09;&#xff1a;表示要完成请求需要进一步操作 4、4xx&#xff08;错误&#xff09;&#xff1a;表示请…

Nuxt实战教程基础-Day01

Nuxt实战教程基础-Day01Nuxt是什么&#xff1f;Nuxt.js框架是如何运作的&#xff1f;Nuxt特性流程图服务端渲染(通过 SSR)单页应用程序 (SPA)静态化 (预渲染)Nuxt优缺点优点缺点安装运行项目总结前言&#xff1a;本教程基于Nuxt2&#xff0c;作为教程的第一天&#xff0c;我们先…

BUUCTF-[RoarCTF2019]polyre

题目下载&#xff1a;下载 这道题目是一个关于控制流平坦化和虚假流程。 首先了解一下控制流平坦化&#xff1a;利用符号执行去除控制流平坦化 - 博客 - 腾讯安全应急响应中心https://www.cnblogs.com/zhwer/p/14081454.htmlbuuctf RoarCTF2019 polyre writeup - 『脱壳破解区…

单点登录的几种实现方式探讨

单点登录&#xff08;Single Sign On&#xff09;&#xff0c;简称为 SSO&#xff0c;是解决企业内部的一系列产品登录问题的方案。SSO 的定义是在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应用系统&#xff0c;用于减少用户重复的登录操作&#…

PyTorch的自动微分(autograd)

PyTorch的自动微分(autograd) 计算图 计算图是用来描述运算的有向无环图 计算图有两个主要元素&#xff1a;结点&#xff08;Node&#xff09;和边&#xff08;Edge&#xff09; 结点表示数据&#xff0c;如向量、矩阵、张量 边表示运算&#xff0c;如加减乘除卷积等 用计算…

共话开源 | 开放原子开源基金会专题调研openKylin社区!

3月8日&#xff0c;开放原子开源基金会秘书长冯冠霖、运营部部长李博、业务发展部部长朱其罡、研发部副部长周济一行莅临openKylin社区调研交流&#xff0c;麒麟软件高级副总经理韩乃平、副总裁董军平、终端研发部副总经理陆展、产品规划部经理常亚武、市场与政府事务部高级经理…

力扣sql简单篇练习(二十五)

力扣sql简单篇练习(二十五) 1 无效的推文 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT tweet_id FROM Tweets WHERE CHAR_LENGTH(content)>151.3 运行截图 2 求关注者的数量 2.1 基本题目内…

【Linux实战篇】二、在Linux上部署各类软件

一、实战章节&#xff1a;在Linux上部署各类软件 二、MySQL数据库管理系统安装部署【简单】 简介 MySQL数据库管理系统&#xff08;后续简称MySQL&#xff09;&#xff0c;是一款知名的数据库系统&#xff0c;其特点是&#xff1a;轻量、简单、功能丰富。 MySQL数据库可谓是…

在矩池云运行 Stable Diffusion web UI,使用v1.5模型和 ControlNet 插件

今天给大家介绍下如何在矩池云使用 Stable Diffusion web UI v1.5 模型和 Stable Diffusion ControlNet 插件。 租用机器 租用机器需要选择内存大于8G的机器&#xff0c;比如 A2000&#xff0c;不然 Stable Diffusion web UI 启动加载模型会失败。&#xff08;Killed 内存不足…

近20个省市加快房屋网签备案,君子签电子签章助推掌上办理

2020年以来&#xff0c;上海、北京、深圳、长沙、武汉、杭州、山东、郑州、西安、佛山、青岛、江门、昆明、韶关、南京、石家庄等全国近20个省市纷纷响应住建部政策要求&#xff0c;鼓励使用电子签名、电子签章等技术加快推动商品房、二手房或租赁房交易合同网签备案&#xff0…

是面试官放水,还是公司实在是太缺人?这都没挂,字节原来这么容易进...

字节是大企业&#xff0c;是不是很难进去啊&#xff1f;” “在华为做软件测试&#xff0c;能得到很好的发展吗&#xff1f; 一进去就有10K&#xff0c;其实也没有想的那么难” 直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节和腾讯…

UEFI开发探索101 – PCD探究(helloworld中的使用)

2 如何使用PCD PCD可以使用于UEFI存在的大部分时间&#xff0c;除了在SEC阶段、早期的PEI和DXE阶段&#xff0c;基本都可以访问。在使用前&#xff0c;我们需要搞清楚PCD的结构和类型。 2.1 PCD的类型 PCD变量的格式有点像结构体&#xff1a; TokenSpaceGuidCName.PcdCName …

【SpringCloud】SpringCloud教程之Gateway实战

目录前言SpringCloud Gatewy网关一.网关功能和工作原理二.网关的类型三.搭建网关四.路由断言工厂(Route Predicate Factory)五.路由过滤器(属于GatewayFilter)六.DefaultFilter过滤器(属于GatewayFilter)七.全局过滤器(GlobalFilter)八.过滤器执行顺序九.Gateway解决跨域问题前…

什么蓝牙耳机适合长时间佩戴?长久佩戴舒适的蓝牙耳机

因为我每天使用蓝牙耳机时间比较长&#xff0c;而且在上下班的路上经常会听听音乐&#xff0c;所以还是非常在意耳机的舒适度&#xff0c;有些耳机压迫感很明显&#xff0c;用久了感觉很不舒服&#xff0c;近期就购入了许多蓝牙耳机&#xff0c;终于整理出了一起佩戴舒适度高的…

vue+echarts.js 实现中国地图——根据数值表示省份的深浅——技能提升

最近在写后台管理系统&#xff0c;遇到一个需求就是 中国地图根据数值 展示深浅颜色。 效果图如下&#xff1a; 直接上代码&#xff1a; 1.html部分 <div id"Map"></div>2.css部分——一定要设置尺寸 #Map {width: 100%;height: 400px; }3.js部分 …

【立体匹配论文阅读】AANet: Adaptive Aggregation Network for Efficient Stereo Matching

Authors: Haofei Xu, Juyong Zhang Link: https://arxiv.org/abs/2004.09548 Years: 2020 Credit Novelty and Question set up 主流的立体匹配模型的代价聚合操作主要用了3D卷积&#xff0c;这部分操作的算力和内存消耗过大&#xff0c;因此作者提出一种新的模型AANet&#x…

C#项目--GridControl数据绑定及数据引入

系列文章 C#项目–业务单据号生成器&#xff08;定义规则、自动编号、流水号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 C#项目–开始日期结束日期范围计算&#xff08;上周、本周、明年、前年等&#xff09; 本文链接&…

KUKA机器人修改机器人名称和IP地址的具体方法示例

KUKA机器人修改机器人名称和IP地址的具体方法示例 修改机器人名称 如下图所示,首先切换用户组到管理员,输入默认密码:kuka, 如下图所示,点击菜单键—投入运行—机器人数据, 如下图所示,此时可以看到机器人的名称为rrr445, 如下图所示,修改之后,点击左侧的“”…

C#项目--打印模板解决方案(自定义模板、条形码、二维码、图片)

系列文章 C#项目–业务单据号生成器&#xff08;定义规则、自动编号、流水号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 C#项目–开始日期结束日期范围计算&#xff08;上周、本周、明年、前年等&#xff09; 本文链接&…

win11安装ubuntu子系统与桌面 填坑记录

win11安装ubuntu子系统win11可以直接从应用市场安装ubuntu子系统。详细安装步骤见参考资料。这里列出一些博主遇到的问题。填坑之路从应用市场获取ubuntu系统时会报0x80240438或者0x80072efd等错误。网络连接有问题&#xff0c;关闭windows防火墙再试&#xff0c;多试几遍安装u…