Пожалуйста, извините мой вопрос новичка, но когда я попытался экспортировать функцию в заголовке, используя
__declspec(dllexport) void testfunction(double i);
и объявил функцию в файле .cpp следующим образом
void testfunction(double i) {
for (int k = 0; k<10; k++) {
double j = 0.1;
}
}
Я вижу это только для функции после разборки .exe-файла с использованием IDA pro:
.text:00401130 ; void __cdecl testfunction(double)
.text:00401130 public ?testfunction@@YAXN@Z
.text:00401130 ?testfunction@@YAXN@Z proc near ; DATA XREF: .rdata:off_40BE88o
.text:00401130 jmp dword_40C000
.text:00401130 ?testfunction@@YAXN@Z endp
Ниже я указал местоположение dword_40C000
.data:0040C000 ; Section 3. (virtual address 0000C000)
.data:0040C000 ; Virtual size : 000004A0 ( 1184.)
.data:0040C000 ; Section size in file : 00000200 ( 512.)
.data:0040C000 ; Offset to raw data for section: 0000B200
.data:0040C000 ; Flags C0000040: Data Readable Writable
.data:0040C000 ; Alignment : default
.data:0040C000 ; ===========================================================================
.data:0040C000
.data:0040C000 ; Segment type: Pure data
.data:0040C000 ; Segment permissions: Read/Write
.data:0040C000 _data segment para public 'DATA' use32
.data:0040C000 assume cs:_data
.data:0040C000 ;org 40C000h
.data:0040C000 dword_40C000 dd 6000001h ; DATA XREF: testfunction(double)r
.data:0040C004 align 10h
.data:0040C010 db 2
.data:0040C011 db 0
.data:0040C012 db 0
.data:0040C013 db 0
.data:0040C014 db 2
.data:0040C015 db 0
.data:0040C016 db 0
.data:0040C017 db 0
.data:0040C018 dword_40C018 dd 6000003h ; DATA XREF: .text:004011A0r
.data:0040C01C dword_40C01C dd 6000004h ; DATA XREF: .text:004011D0r
.data:0040C020 dword_40C020 dd 6000005h ; DATA XREF: .text:00401200r
...
Разве не должно быть больше кода, так как у меня есть цикл for и некоторые другие вещи? Где актуальный код?
Кажется, вы используете C ++ / CLI. Я думаю, что 6000001 — это токен управляемого метода, он будет заменен адресом кода JITted во время выполнения.
Скомпилируйте свой двоичный файл для родного x86, чтобы увидеть машинный код.
Других решений пока нет …