无法定位InitializeCriticalSectionEx程序输入点于动态链接库kernel32.dll上.

无法定位InitializeCriticalSectionEx程序输入点于动态链接库kernel32.dll上.,第1张

原因:编译的release版本,在XP下运行报错误“无法定位程序输入点InitializeCriticalSectionEx

于动态链接库kernel32dll”。

解决步骤:

1、请先升级到最新Update4。

2、将工程(包括用到的DLL工程也需设置)做如下设置:

项目——属性——配置属性——常规——平台工具集——Visual

Studio

2012

-

Windows

XP

(v110_xp)

项目——属性——配置属性——常规——MFC的使用——在静态库中使用

MFC。

项目——属性——配置属性——常规——ATL的使用——静态链接到

ATL。

平台工具集,必须设置。MFC的使用、ATL的使用结合具体情况。Release版一般设为静态。

对计算机软件的维护主要有以下几点:

(1)对所有的系统软件要做备份。当遇到异常情况或某种偶然原因,可能会破坏系统软件,此时就需要重新安装软件系统,如果没有备份的系统软件,将使计算机难以恢复工作。

(2)对重要的应用程序和数据也应该做备份。

(3)经常注意清理磁盘上无用的文件,以有效地利用磁盘空间。

(4)避免进行非法的软件复制。

(5)经常检测,防止计算机传染上病毒。

(6)为保证计算机正常工作,在必要时利用软件工具对系统区进行保护。

总之,计算机的使用是与维护分不开的,既要注意硬件的维护,又要注意软件的维护。

方法如下:

在C源码中,定义一个全局变量,将此变量放到一个自定义的section中。

然后,在链接程序时,通过一个链接选项,指定此自定义section的地址,就达到目的了。

下面是示例程序

[cpp] view plain copy

/ link_testc /

#include <stdioh>

#include <errnoh>

char a[10241024] __attribute__ ((section ("my_test_section"))) =

"a ha ha ha, i was located at a fixed address!";

int main(int argc, char argv[])

{

printf("&a=%p\n", a);

printf("%s\n", a);

return 0;

}

编译及运行效果(Linux X86_64环境)。

注意,由于这里是通过gcc调用ld完成链接,因此需要通过-Xlinker将链接选项--section-start=my_test_section=0x700000传递给最终的ld

[plain] view plain copy

[root@localhost ~]# gcc -Xlinker --section-start=my_test_section=0x700000 link_testc

[root@localhost ~]# /aout

&a=0x700000

a ha ha ha, i was located at a fixed address!

1 ARM汇编文件格式

扩展名为 s

ARM汇编语言是以section为单位来组织源文件的。

Section是相对独立的,具有特定名称,不可分割的指令,或数据序列。

Section分为:

code section -- 存放执行代码。

data section -- 存放代码运行时所需的data

一个ARM源程序至少需要一个code section。

大的程序:可以包含多个 code section / data section

GNU环境:

global _start

text

_start:

mov r0,#10

mov r1,#3

add r0,r0,r1

end

2 汇编语言语句格式

GNU ARM汇编 - (5) - 路雷米 - 路雷米的博客

F/B : 用于指示编译器向前/向后搜索。

3 C与ARM汇编程序间的相互调用

ATPCS -- ARM-Thumb Procedure Call Standard(ARM-Thumb子程序调用标准)

定义了单独编译的C程序和ARM/Thumb汇编之间,互相调用的规则。

section指的“部分”是不同质的,如:The TOEFL is divided into three sectiond,namely listening,structure and reading在这里托福考试是由三部分组成的,这三部分是不一样的,即不同质的。而segment指的“部分”是同质的,如:I want the middle segment of the rope我想要中间那段绳子,其实绳子的任何段都是一样的,即同质的。

常量是一个命名的数据项,在整个 *** 作过程中其值保持不变。如PI值,即3.1415926535是数值型常量。 VFP定义了如下类型的常量:

数值型常量,如:20,16,100,1

字符型常量,用单引号或双引号括起来的字符串,如:"ABCD"

逻辑型常量,只有两种:T和F.

日期型常量和日期时间型常量,如:{^1999-04-22},{^1999-04-24 10:00am}

关键的是,常量和变量是放在不同的"段"(section)里,程序一旦加载,常量/变量自然都在内存里了。

常量和全程变量,通常放在初始化段;局部变量,通常在栈里;

还有一种情况,比如汇编里的立即数(mov ax, 12),它是直接放在指令里的,也即是代码段里

由上面,我们可以知道,常量是在程序加载的时候,一起加载到内存中去的,这个时候是要占用内存资源的。。。

《联合国国际海洋法公约》本身没有强制执行的法律效力,它必须和国内法联合起来才有,比如海事法院在办理船舶损害赔偿、海洋污染损害赔偿等案件时,会引用《联合国国际海洋法公约》和国内法,然后做出判决,最后是法院的生效判决有强制执行的法律效力。

以上就是关于无法定位InitializeCriticalSectionEx程序输入点于动态链接库kernel32.dll上.全部的内容,包括:无法定位InitializeCriticalSectionEx程序输入点于动态链接库kernel32.dll上.、如何在程序中预留一段固定的虚拟地址空间、arm汇编语言以什么为单位组织源文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9618612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存