__declspec(dllimport)表现不尽如人意

时间:2017-09-04 11:53:29

标签: c++ visual-c++ dll dllimport declspec

我在这里使用此代码:

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)提示编译器后端该函数 调用驻留在外部DLL中,因此不应生成间接调用(FF 15 ...),这意味着没有间接调用蹦床......

看着拆卸时, 函数(),Add()和GetCurrentProcess()导致间接远程调用,这不应该发生,因为我明确地给编译器提示不发出“FF15”但是输入“E8”。

显然我想念......在这......任何提示? (项目设置为VS 2015,发布版本,无增量链接,大小超速,优化大小)

0 个答案:

没有答案