我已經創建了Dll項目。 我創建了一個有一個函數myasm.asm文件:從DLL導出ASM函數 - Visual Studio C++
.486
.model flat, stdcall
.code
MyProc1 proc x: DWORD, y: DWORD
xor eax,eax
//......//
ret
MyProc1 endp
end
還有就是我heade文件:
#pragma once
#include <Windows.h>
#ifdef LAB1DLL_EXPORTS
#define LAB1DLL_API __declspec(dllexport)
#else
#define LAB1DLL_API __declspec(dllimport)
#endif
extern "C"
{
LAB1DLL_API int _stdcall MyProc1(DWORD x, DWORD y);
}
而且DllMain的(它beging)」
#define LAB1DLL_EXPORTS 1
#include "Lab1Dll.h"
林我的測試應用程序,我想要使用該DLL,它的導出功能我有:
#include "Lab1Dll.h"
但我的DLL不導出MyProc1函數。如果我向該DLL添加「正常」函數並將其exprot,那麼它在我的Test應用程序中可用,並且DLL編譯過程生成lib文件。
沒有「正常」功能我沒有得到.lib文件。我無法鏈接到該庫。
如何使導出的函數有效?或者如何使它首先出口?
更新: 我看到用下面的contens添加.def文件是完美的。但是之後。我不應該這樣做。那是__declspec(dllexport)應該爲我做些什麼?
LIBRARY
EXPORTS
MyProc1
可能與裝飾/ mangled名稱有關;用'dumpbin'檢查。嘗試在'myasm.asm'中定義具有裝飾/損壞名稱的proc(但不包括頭文件和C源代碼)。其他建議:http://stackoverflow.com/questions/2804893/c-dll-export-decorated-mangled-names –
@Ruud如何?我在問這個「裝飾」。 – Hooch