
VC
文章平均质量分 59
norsd
这个作者很懒,什么都没留下…
展开
-
libstdc++ GLIBCXX_3.4.20 not found 解决方法
背景:不想升级gcc,太累了。参考如下文章:下载这个zip。原创 2025-03-16 20:00:24 · 195 阅读 · 0 评论 -
一次Linux下 .net 调试经历
我甚至认为这个api收到了 .net 的路径影响,因为linux调用 .net 形如 dotnet ./MyApp.dll 这个api在查找ini时用的是 dotnet 的路径,而显示的时候用的是dll的路径。所以我们回过头,再去看之前的错误,我们认为我们一直在调用init函数,其实调用的是 setCallback(*pCallback) 函数, 我们以为传入的是字符串,但是api认为你传入的是pCallback, 而且最。但是,Linux的反汇编已经说了, init 的位置是 第4个函数!原创 2025-03-16 19:41:21 · 801 阅读 · 0 评论 -
如何确定虚函数在虚函数表中的位置3 (Linux x64版本)
我们看到第一个函数setCallback 的 Offset 为 17, 下一个函数init的Offset为 25, 就是 17 + 8。首先,gcc没有用thunk, 直接调用虚函数,所以,我们在windows中读取thunk的函数。之前2篇Blog说明了如何在Windows下确定虚函数在虚函数表中的位置。但是有一点需要注意,获得的Offset不要直接使用,而是确定虚函数的次序。用在Linux环境下,直接就是一个 Offset , 非常方便!其实真正的第一个函数是类的析构函数,他的Offset为 9。原创 2025-02-22 12:50:09 · 234 阅读 · 0 评论 -
如何确定虚函数在虚函数表中的位置1 (Windows x86版本)
在底层汇编中, 我们知道, a_reqCreditDetail 这个函数指针指向的是一个thunk代码块( 这个代码块只有1条jmp语句)我需要用c#调用 c++ 的 类的函数, 虽然可以通过头文件的顺序,但是如果可以打印出虚函数在虚表中的Offset更好。需要指出的一点是 jmp dword ptr [eax + x] 对应的语句分别是。我们则需要得到这个 x 的值, 他就表示虚函数在虚函数表中byte的offset。这里ecx指向的就是类, 也是类的虚函数表。我只能用如下的语句实现。原创 2024-04-05 19:05:59 · 469 阅读 · 0 评论 -
如何确定虚函数在虚函数表中的位置2 (Windows x64版本)
之前写了一篇blog,描述 Windows 在x86 下,如何确定Virtual Function在Table中的位置。我们第一步要获得这个thunk的地址,用伪代码就是: &Class::vfn_name。当然,我们为了获取所有地址,需要每一个函数都写一个这样的FunctionPointer。后来我在咨询deepseek的时候,他偶尔提了一嘴,说可以用Union的方法。我们发现他的逻辑和x86是一模一样的,只是指令变为了x64的版本。没有写x64的情况,主要原因是x64不支持内联汇编。原创 2025-02-22 12:34:26 · 259 阅读 · 0 评论 -
关于函数参数压入堆栈, C#函数作为CallBack的问题@CTP
关于函数参数压入堆栈@CTP问题描述:之前使用C#的Delegate描述C++的类函数如下:///请求查询合约响应virtual void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {}...原创 2020-01-16 01:17:58 · 336 阅读 · 0 评论 -
MongoDb Windows 环境下 c++ driver 安装流程
1.安装boost 1.60 位置: c:\boost_1_60_0下载安装mongo c dirver http://mongoc.org/?jmp=docs#documentation http://mongoc.org/libmongoc/current/installing.html Building on Windows先编译 libbson 进入libsson的...原创 2018-05-11 17:01:36 · 2060 阅读 · 0 评论 -
MognoDb Linux C++ Driver 编译,运行注意事项
1.MongoDb C++ Driver 一般安装于 ./usr/local目录下,在这个目录下你能看到 boost文件夹, include文件夹(内部有bsoncxx,libbson, libmongoc, mongocxx等), lib文件夹(libson,libmongoc,mongocxx的各种so文件) 2.我们使用VisualStuio编译Linux工程,工程文件的设置如下: ...原创 2018-05-26 16:27:57 · 654 阅读 · 0 评论 -
Visual Studio build Linux ValidateSources FAILED
当编译Linux的程序时, VC会把所有引用的文件复制到Remote, 在这之前,他将做 ValidateSources 检查文件是否正常。如果你引用的文件被移动或者删除,将产生这个错误。 例如:1>Target _ValidateSources:1> Using "ValidateSources" task from assembly "C:\Program File...原创 2018-05-31 22:33:22 · 1057 阅读 · 0 评论 -
c++ 显式转换中的问题
显示转换中的问题auto test = (PCSTR)(String::Format("regex_match failed: \"%s\"", a_strAddress.c_str()));String::Format 返回一个String类型临时变量,我们把他称为 “t” 他被要求显示转化为PCSTR, 内部实现为 return this._str.c_str() 最后赋值...原创 2018-05-26 20:33:37 · 402 阅读 · 0 评论 -
C++ 父类泛型中涉及到衍生类时的方法
gcc(相比较vc++)对于前置声明类不太友好class BsonArray;//BsonArray是BasicBsonValue的衍生类, 衍生类必须在Base类之后定义,所以这里只能用前置类class Bson{... template<typename T> static BasicBsonValue* From(const vect...原创 2018-06-01 01:13:56 · 1742 阅读 · 0 评论 -
c++ typeid 注意事项
typeid 对于不含有虚函数的类对象,无法识别 对于含有虚函数的对象能够识别无法准确识别任何指针对象#include "stdafx.h"#include <iostream>#include <string>using namespace std;class BaseNoVirtual{};class DeriveNoVirtual...原创 2018-06-01 09:49:24 · 1494 阅读 · 0 评论 -
Nanomsg 安装在windows下的流程
从GitHub上下载 zip https://github.com/nanomsg/nanomsg官方Readme.md中关于Windows的安装方法很简单,如果你完全照做可能编译后是一个32bit的nanomsghttps://github.com/nanomsg/nanomsg/issues/859 有人提出了解决方法 : mkdir build cd build cmake -...原创 2018-07-30 14:55:54 · 3419 阅读 · 1 评论 -
C++11 std::unique_lock与std::lock_guard区别及多线程应用实例
参考:https://blog.youkuaiyun.com/tgxallen/article/details/73522233转载 2018-12-13 23:27:17 · 226 阅读 · 0 评论 -
在修改dll名字后如何使lib重建,定向到新名字的dll
ref:https://blog.youkuaiyun.com/GG_SiMiDa/article/details/81742924因为工作需要区分不同版本的dll(名字相同), 工程中不希望动态LoadLibrary,而是用lib所以必须重建lib。将dll改名为 原名.version.dll用 pexports 生成 def: pexports -o xxx.dll > xxx.d...原创 2019-08-22 12:49:43 · 1238 阅读 · 0 评论 -
CTP RegisterFront 直接崩溃(Access violation writing location)的原因
CTP 崩溃原创 2017-12-27 21:59:29 · 1881 阅读 · 1 评论 -
C++ Class 构造时由于LazyMode 和 Copy Constructor导致的问题
这里写代码片reference: http://stackoverflow.com/questions/1993727/expanding-tuples-into-arguments原创 2017-07-27 14:41:17 · 462 阅读 · 0 评论 -
VC 在WIN32 中 使用 GDIPlus
1.在 stdafx.h 中注释掉#define WIN32_LEAN_AND_MEAN 或者添加#include 在visual studio 2012 中似乎默认不用改2. 找到一个 cpp 文件,加入:#include using namespace Gdiplus;#pragma comment(lib,"gdiplus.lib")3.w转载 2013-04-01 17:43:14 · 845 阅读 · 0 评论 -
c# 工程加入 win32 资源文件
这种事情就是一个字烦人,蛋疼,特别蛋疼。 搞了我一天。方法有几种,都特别烦,一个是 build event , 一个是 msbuild今天说 build event1.在 Build Events 中 , Pre-build 输入:copy $(ProjectDir)Time/norlib.Time.Holidays.xml "$(TargetDir)norlib.Time.Holidays.原创 2013-04-23 17:33:59 · 2028 阅读 · 0 评论 -
VC.net 创建 ref class 后, C#调用报错 Cannot create an instance of the abstract class or interface CS0144
VC.net 创建 ref class 后 C#调用报错 Cannot create an instance of the abstract class or interface CS0144同样的错误:http://computer-programming-forum.com/7-vc.net/aa44def3c57690b4.htm发现如上面链接所说原创 2013-04-27 14:43:13 · 3505 阅读 · 0 评论 -
VC 一些配置问题, include, lib 种种
1. Configuration Properties -> General Output Directory 设置输出路径TargetName 设置输出的文件名,不包扩扩展名,一般是 $(ProjectName)Target Extension 设置输的文件扩展名2. Configuration Properties -> VC++ Directories设置 执行路径,原创 2013-04-19 16:18:08 · 863 阅读 · 0 评论 -
C++/CLI/VC.NET 实现OpenFileDialog的定制,使他可以选择文件夹
1.原因 前段时间需要使用OpenFileDialog选择文件夹,google上有c#的办法,比较简单,只要设置Filter=乱七八糟的符号,让所有文件都显示不出来就可以。但是这样总是有点不舒服。让我想起过去在MFC模式下创建的VC的OpenFileDialog定制,需要使用到资源文件(因为系统函数中要求你提供你的模板ID). c#也可以实现,但是必须自带res文件,这点非常麻烦,可以看这里:ht原创 2013-05-03 09:47:44 · 4555 阅读 · 0 评论 -
C++ C# 默认对齐是8字节
C++ C# 默认对齐是8字节以上,一直以为是4字节,尼玛原创 2013-11-21 13:05:32 · 1873 阅读 · 0 评论 -
VC++11 编译中的一些问题的解决办法
1. vc++ 的编译器的错误往往定位在错误的那一处,但是那一处可能在原创 2014-04-20 17:40:10 · 810 阅读 · 0 评论 -
WindApi2 , WindOriginalApiLibrary 突然不兼容问题
1. 在新的电脑上从tfs拉下代码后编译, windori原创 2014-04-06 00:39:43 · 765 阅读 · 0 评论 -
std::thread 在DLLMain 中会发生死锁 std::thread cause deadlock in DLLMain
注意不要再DLLMain中使用 std::thread 否则会发生死锁。 但是可以使用 _beginthreadex (此函数可以使用lambda) 或者直接使用windows的底层函数: CreateThread相关链接: http://stackoverflow.com/questions/32252143/stdthread-cause-deadlock-in-dllmain原创 2015-12-26 18:34:54 · 1480 阅读 · 0 评论 -
printf汇总
Reference: http://www.cplusplus.com/reference/cstdio/printf/printf(“%02d:%02d:%02d.%03d”, hour, min, sec, ms);12:03:29.500原创 2016-05-01 19:25:42 · 508 阅读 · 0 评论 -
c/c++/c# 快速计算 Cumulative Normal Distribution 正态累积函数CDF
链接: http://stackoverflow.com/questions/2328258/cumulative-normal-distribution-function-in-c-c http://www.johndcook.com/blog/cpp_phi/个人使用的是如下的代码:static double CND(double d){ const double A1转载 2016-09-05 12:01:38 · 4340 阅读 · 0 评论 -
使用C++11和相关驱动访问MongoDb
#include <cstdio>#include <iostream>#include <bsoncxx/array/view.hpp>#include <bsoncxx/builder/stream/document.hpp>#include <bsoncxx/json.hpp>#include <mongocxx/client.hpp>#include <mongocxx/instan原创 2017-03-25 17:38:43 · 1484 阅读 · 0 评论 -
CountBitsSetTable
ref: http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetTableCounting bits set by lookup tablestatic const unsigned char BitsSetTable256[256] = {define B2(n) n, n+1, n+1, n+转载 2017-07-01 14:50:04 · 363 阅读 · 0 评论 -
DLL main 函数注意事项 switch
switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: { LPCWSTR pcw = L"DLL_PROCESS_ATTACH"; GetChu::udpclient.Send((PVOID)pcw,wcslen(pcw)*2+2); getchu.Start(); break; } case D原创 2013-03-19 14:20:56 · 1240 阅读 · 0 评论