小编Rez*_*dan的帖子

即使静态链接,C++也会请求MSVCP110D.dll

我在我的机器上用C++创建了一个dll注入方法,当我尝试将特定的dll注入到游戏中时,它非常有效.但是,当我在我朋友的计算机上运行该程序时(没有安装Visual Studio可再发行组件),我被警告我需要MSVCR等...(可再发行组件).
所以我在发布模式下使用Visual Studio 2012中的以下设置编译:运行时库:多线程/ MT.现在,当我在朋友的机器上运行它时,我被警告我只需要库MSVCP110D.dll (很奇怪,要求调试版本)(没有防病毒软件,UAC被禁用).我在发布路径中手动复制了所请求的库,但仍无法正常工作.

究竟是什么问题?

这是我制作的注塑代码:

int inject(string lpLibraryPath)
{
    HANDLE      hProc;
    LPVOID      paramAddr;
    HINSTANCE   hDll;

    hDll = LoadLibrary(L"KERNEL32");

    fpLoadLibrary LoadLibraryAddr = (fpLoadLibrary)GetProcAddress(hDll, "LoadLibraryA");

    hProc = OpenProcess(PROCESS_ALL_ACCESS, false, id);

    paramAddr = VirtualAllocEx(hProc, 0, strlen(lpLibraryPath.c_str()) + 1, MEM_COMMIT, PAGE_READWRITE);

    if(WriteProcessMemory(hProc, paramAddr, lpLibraryPath.c_str(), strlen(lpLibraryPath.c_str()) + 1, NULL) == NULL)
    {
        return 0;
    }

    CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryAddr, paramAddr, 0, 0);

    CloseHandle(hProc);

    return 1;   
}
};
Run Code Online (Sandbox Code Playgroud)

这是主要功能 - 在这里我称之为方法

int inject(string lpLibraryPath)
{
    HANDLE      hProc;
    LPVOID      paramAddr; …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi visual-c++

13
推荐指数
1
解决办法
665
查看次数

c ++读取数组中的每3个元素

我正在研究一个项目,我想按顺序打印一个字符串数组的每个3个元素.如果字符串是"cadgfacbda",我想在控制台中打印:

**"cad gfa cbd a"**

这是代码:

        string str("cadgfacbda");
        for(int i = 0 ; i < 3 ; i++)
        {
            for(int j = i ; j <  str.size() ; j +=3 )
            {
               cout << str[j]<<" ";
            }
        cout<<endl;
    }
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

CGCA

空军基地

c++ arrays

5
推荐指数
1
解决办法
595
查看次数

如果没有常量变量,SDL无法创建矩形数组

我在C++ SDL lib中工作.我试图动态创建一些矩形.但它不起作用.我在搜索stackoverflow.com时找到的唯一解决方案是创建一个常量值,我不想这样做.

谁能帮我?

这是我的代码:

void lvl001(){
max_score = 20;
count_enemies = 2;
SDL_Surface *enemie;
SDL_Rect enemies_sources[no] , enemies[no];

enemie = SDL_LoadBMP("player.bmp");

for( int count = 1; count <= no ; count++ ){
 enemies_sources[count].x = 0;  
}
}
Run Code Online (Sandbox Code Playgroud)

还有一件事.如果有一个解决方案,那么如果我想blit它,我该SDL_Blit...怎么办?()?

c++ sdl

1
推荐指数
1
解决办法
212
查看次数

获取最后n位二进制

我正在研究一个项目,我需要的是获取n二进制文件的最后几位.我尝试了一些东西,但是我工作得不好.这是代码:

long long int to_bin(int n)
{
     long long int Fin=0,pow=1;
     while(n)
     {
       Fin=Fin+(n%2)*pow;
       n/=2;pow*=10;
     }
 return Fin;
}           // returns binary 

int get_last_n_digits(int nr , int n_dig)
{
    int l_digits =0 , power = 1;
        for(int i = 0 ; i < n_dig ; i++)
            power *=10;
        l_digits = nr%power;
    return l_digits;
}         //returns last digits of a number
Run Code Online (Sandbox Code Playgroud)

例如,我需要245的二进制表示的最后2位,即这样的东西:

get_last_n_digits(to_bin(254,S) ; 
Run Code Online (Sandbox Code Playgroud)

结果是:4; 怎么了 ?

c++

1
推荐指数
2
解决办法
2808
查看次数

标签 统计

c++ ×4

arrays ×1

sdl ×1

visual-c++ ×1

winapi ×1

windows ×1