小编ara*_*ara的帖子

如何在Visual Studio项目中引用用户定义的段的开头?

我正在努力转换与gnu工具链的ld链接的C程序,以使其作为visual-studio(2005)项目进行编译.该程序将.data-symbols放在不同的段中,在初始化阶段,它在段之间复制数据.指向段开头和结尾的指针在ld链接描述文件中定义.

我理解如何将变量定位到不同的,用户定义的段中,但我还没有弄清楚如何定义链接器常量,如_start_of_my_segment,或者是否有类似于Visual Studio中的链接描述文件.

我的目标是能够编译程序,最好不要修改引用链接器定义符号的源代码,而是使用我自己的Visual Studio项目中数据的自定义布局.

下面是一些示例C代码,它说明了我想要做什么以及与gcc/ld链接时使用的make脚本的一个(精简的,可能是语法错误的)版本.

任何提示将不胜感激!

#pragma data_seg( "MY_DATA_FOO" )
#pragma data_seg( "MY_DATA_BAR" )
#pragma comment(linker, "/section:MY_DATA_BAR,R")

__declspec(allocate("MY_DATA_FOO")) int foo1;
__declspec(allocate("MY_DATA_FOO")) int foo2;

__declspec(allocate("MY_DATA_BAR")) int bar1 = 1;
__declspec(allocate("MY_DATA_BAR")) int bar2 = 2;

#pragma data_seg( )
void test() {
    foo1 = bar1;
    foo2 = bar2;

    // i would rather do this as 
    //extern unsigned int __start_of_MY_DATA_FOO;
    //extern unsigned int __start_of_MY_DATA_BAR;
    //extern unsigned int __size_of_MY_DATA_BAR;
    //memcpy(__start_of_MY_DATA_FOO, _start_of_MY_DATA_BAR, _size_of_MY_DATA_BAR);
}
Run Code Online (Sandbox Code Playgroud)

伪链接脚本(Visual Studio的等价物)

MEMORY
{
  foo:  org=0x1000, len=0x100
  bar:  org=0x2000, len=0x100
} …
Run Code Online (Sandbox Code Playgroud)

c linker symbols segment visual-c++

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

标签 统计

c ×1

linker ×1

segment ×1

symbols ×1

visual-c++ ×1