我已经创建了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