__declspec (dllimport) не работает должным образом

Я использую этот код здесь:

include "windows.h"#include "stdio.h"#include <conio.h>
#pragma comment(lib, "StubDLL.lib")
// StubDLL defines as __declspec(dllexport)  Add and Function

#include "StubDLL.h"
// just to try it with MS Function
__declspec(dllimport) HANDLE WINAPI GetCurrentProcess(void);

/*
this is done in StubDLL.h
extern "C"{
__declspec(dllimport) int Add(int a, int b);
__declspec(dllimport) void Function(void);
}
*/
int main()
{
Function();
std::cout << Add(32, 58) << "\n";

HANDLE test = GetCurrentProcess();

printf("%d \n", test);

return 0;
}

сейчас, согласно:
https://msdn.microsoft.com/en-us/library/aa271769(v=vs.60).aspx:

__declspec (dllimport) подсказывает бэкенду компилятора, что функция
named находится во внешней DLL и поэтому не должен генерировать косвенный вызов (FF 15 …), что означает отсутствие косвенных вызовов на батуте …

глядя на разборку,
Функции (), Add () и GetCurrentProcess () приводят к косвенным дальним вызовам, что не должно происходить, поскольку я явно даю подсказке компилятору не испускать «FF15», а вставлять «E8».

Видимо я скучаю по чему-то. здесь … Есть намеки?
(настройка проекта VS 2015, сборка выпуска, нет инкрементального связывания, размер по скорости, оптимизация по размеру)

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector