VS2008里,创建一个win32 static libraryd静态库后,怎么添加一个 symbol “TETLIBRARY” 到编译开关?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2008里,创建一个win32 static libraryd静态库后,怎么添加一个 symbol “TETLIBRARY” 到编译开关?相关的知识,希望对你有一定的参考价值。
要求是:add the symbol “TETLIBRARY” to compile switches,然后再build
楼上大概意思都说了,不赘述。要求中,如果只是添加一个预编译标识符号,这个很简单,看需要做什么,这个和_DEBUG和_RELEASE的定义一个位置,你可以在项目设置里面参考一下。
如果需要像_DEBUG这样的用法,就要注意,每个编译模式里面是否需要不一样(就像_DEBUG),这样做程序代码里面做这样的判定才可能有意义:
#ifdef TETLIBRARY
....
#else
....
#endif 参考技术A 在解决方案管理器中,选中项目点右键->属性->配置属性->C/C++->预处理器->预处理器定义, 在最后边加上 ;TETLIBRARY
Win7 VS2015 x64汇编语言编写DLL文件
有点坑记录一下。
首先创建工程时选控制台类型工程,Win32估计就应该选Win32的,反正我测试用的控制台。
然后选DLL类型,除了Empty其他全都去掉。
工程属性,masm勾上。
Linker >> Advanced里
Entry Point写上默认的入口函数
DllEntryPoint
Linker >> Input里
Module Definition File写上你所用的def文件名
建立asm和def文件,如下
ASM
.code DllEntryPoint proc mov rax, 1 ret DllEntryPoint endp AddFun proc mov eax, ecx add eax, edx ret AddFun endp end
DEF
LIBRARY "ASM64DLLTest" EXPORTS AddFun
然后就可以了,只是一个简单的加法函数,对应C++版本为
__declspec(dllexport) int Add(int a, int b) { return (a + b); }
然后写个x64控制台程序测试一下。
#include <iostream> #include <windows.h> using namespace std; typedef int(*MYPROC)(int, int); int main() { HINSTANCE hinstLib; MYPROC ProcAdd; BOOL fFreeResult = FALSE; // Get a handle to the DLL module. hinstLib = LoadLibrary(TEXT("ASM64DLLTest.dll")); // If the handle is valid, try to get the function address. if (hinstLib != NULL) { ProcAdd = (MYPROC)GetProcAddress(hinstLib, "AddFun"); // If the function address is valid, call the function. if (NULL != ProcAdd) { cout << (ProcAdd)(1, 2) << endl; cout << "LoadLibrary Success and Function Run" << endl; } else { cout << "LoadLibrary Success and GetProcAddress Fail" << endl; } // Free the DLL module. fFreeResult = FreeLibrary(hinstLib); if (fFreeResult == 1) { cout << "FreeLibrary Success" << endl; } else { cout << "FreeLibrary Fail" << endl; } } else { cout << "LoadLibrary Fail" << endl; } return 0; }
结果
以上是关于VS2008里,创建一个win32 static libraryd静态库后,怎么添加一个 symbol “TETLIBRARY” 到编译开关?的主要内容,如果未能解决你的问题,请参考以下文章
我安装的VS2008怎么win32控制台应用程序生成时窗口总是自动运行一遍就自动关闭
Win7下在Visual Studio 2008里运行程序时出现找不到MFC90D.dll文件, Command Prompt找不指定路径