欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > vs2010里常规开发设置_VS2010内核开发环境配置

vs2010里常规开发设置_VS2010内核开发环境配置

日期:2023-09-20 08:11

本人出现的问题做下记录,如果不能帮助到各位请不要怪我。

配置管理器新建x64

调试报错

1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afx.h(24) : fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]

属性页(右键点击Hello工程名最下面选项)->配置属性->常规->项目默认值->MFC的使用里选择在共享DLL中使用MFC。

重新编译后出现如下错误:fatal error LNK1561: 必须定义入口点,

属性页->配置属性->链接器->高级->入口点写入程序入口点WinMainCRTStartup。

应用程序真正的入口点是WinMainCRTStartup

这是VC库文件中的函数,由它来初始化全局变量并调用WinMain,WinMain中调用CMyApp::InitInstance。

首先你要装好催化剂显卡驱动。

下载AMP APP SDK安装包,比如64的就叫AMD-APP-SDK-v2.4-Windows-64.exe,安装AMD APP SDK,如图0。 安装完之后重新启动。

首先知道一下安装的位置,我这里按默认装在了 C:\Program Files (x86)\AMD APP\ ,如图1。

图1

系统安装的时候系统已经设置了一个环境变量AMDAPPSDKROOT来指示安装的位置,可以在cmd里查看,如图2。

图2

系统也已经把可执行路径加到了PATH里,这样就可以找到OpenCL的运行库。如图3。

图3

打开一个已有的OpenCL项目,或者新建一个项目。 如果新建项目,点击文件->新建,建立一个空项目。加入一个自己写的HellowCL之类的源码,如果没有,我这里写了一个初始化的小源码,诸位可以自行下载添加,结果如图6。OpenclConfig.cpp

图6

因为安装包已经在系统的PATH路径里加入了动态链接库的路径,所以就没有必要再在VS里添加了,我们需要做的就是添加需要的包含

目录和库目录,为了同时兼容32位和64位系统,需要对32位系统和64位系统差异对待。如果你只考虑单个平台下的配置,那么只需要

以下内容中相应平台的配置即可。

由于默认的环境是Win32,我们在这里添加一个x64的平台支持,前提是你安装了64位的编译器,如果你不需要64位,那么往下看即可

。 1. 左侧项目名右键->属性 2. 看到属性页窗口之后,点击右上方的配置管理器, 3. 在配置管理器中下拉,选择<新建> 4. 在键入或选择新平台中下拉,选择x64,确定 以上过程如图7。

图7

一、通用配置,32位和64位都得有的,打开项目属性页: (1)左上角配置选所有配置,平台选所有平台 (2)C/C++->常规->附加包含目录 添加$(AMDAPPSDKROOT)include,如图8。 图8 (3)链接器->输入,附加依赖项里加入OpenCL.lib

二、32位独有的配置,项目属性页中: (1)左上角配置选所有配置,平台选Win32 (2)链接器->常规 附加库目录,加入$(AMDAPPSDKROOT)lib\x86,如图9。 图9

三、64位独有的配置,项目属性页中: (1)左上角配置选所有配置,平台选x64 (2)链接器->常规 附加库目录,加入$(AMDAPPSDKROOT)lib\x86_64,如图10。 图10

以上配置完成之后即可编译运行,在上面给出的代码中,如果看到图11,说明编译运行成功。 图11

如果32位和64位的都配置好了,可以在工具栏里选择Debug/Release,Win32/x64的任意组合进行编译。

望大家Coding愉快!

此条目由?

intijk?发表在?

HPC?分类目录,并贴了?

64位、

AMD、

opencl、

vs2010、

x64、

配置?标签。将

固定链接加入收藏夹。

《VS2010 AMD OPENCL 开发环境配置, 32位+64位》上有 2 条评

vs2010 代码

#include

#include

#include

#define CL_VERBOSE

void openclRetTackle(cl_int retValue, char* processInfo){

if(retValue!=CL_SUCCESS){

#if (defined CL_DEBUG) || (defined CL_VERBOSE)

printf("%s Error!\n",processInfo);

#endif

exit(-1);

}else{

#ifdef CL_VERBOSE

printf("%s Success!\n",processInfo);

#endif

}

}

cl_platform_id cpPlatform;

cl_device_id cdDevice;

cl_context cxGPUContext;

cl_command_queue cqCommandQueue;

int openclInit()

{

cl_int ret;

//?????ID

openclRetTackle( clGetPlatformIDs(1, &cpPlatform, NULL), "clGetPlatFormIDs");

//???GPU?豸ID

openclRetTackle( clGetDeviceIDs(cpPlatform, CL_DEVICE_TYPE_GPU,1,&cdDevice,NULL), "clGetDeviceIDs");

//???GPU?豸??????

cxGPUContext = clCreateContext(0, 1, &cdDevice, NULL, NULL, &ret);

openclRetTackle( ret , "clCreateContext" );

//????????????

cqCommandQueue = clCreateCommandQueue(cxGPUContext, cdDevice, 0, &ret);

openclRetTackle( ret , "clCreateCommandQueue");

return CL_SUCCESS;

}

int main()

{

openclInit();

system("pause");

return 0;

} vs2012代码

HelloWorld

本人偷懒就用fixstar的代码了,建立项目,新建c或者cpp文件,粘贴下列代码进去:

[cpp]?

view plain

copy

print

?

#include??? #include??? #include??? ?? #define?MEM_SIZE?(128)?? #define?MAX_SOURCE_SIZE?(0x100000)?? ?? int?main()?? {?? ????cl_device_id?device_id?=?NULL;?? ????cl_context?context?=?NULL;?? ????cl_command_queue?command_queue?=?NULL;?? ????cl_mem?memobj?=?NULL;?? ????cl_program?program?=?NULL;?? ????cl_kernel?kernel?=?NULL;?? ????cl_platform_id?platform_id?=?NULL;?? ????cl_uint?ret_num_devices;?? ????cl_uint?ret_num_platforms;?? ????cl_int?ret;?? ?? ????char?string[MEM_SIZE];?? ?? ????FILE?*fp;?? ????char?fileName[]?=?"./www.introzo.com";?? ????char?*source_str;?? ????size_t?source_size;?? ?? ????/*?Load?the?source?code?containing?the?kernel*/?? ????fp?=?fopen(fileName,?"r");?? ????if?(!fp)?{?? ????????fprintf(stderr,?"Failed?to?load?kernel.\n");?? ????????exit(1);?? ????}?? ????source_str?=?(char*)malloc(MAX_SOURCE_SIZE);?? ????source_size?=?fread(source_str,?1,?MAX_SOURCE_SIZE,?fp);?? ????fclose(fp);?? ?? ????/*?Get?Platform?and?Device?Info?*/?? ????ret?=?clGetPlatformIDs(1,?&platform_id,?&ret_num_platforms);?? ????ret?=?clGetDeviceIDs(platform_id,?CL_DEVICE_TYPE_DEFAULT,?1,?&device_id,?&ret_num_devices);?? ?? ????/*?Create?OpenCL?context?*/?? ????context?=?clCreateContext(NULL,?1,?&device_id,?NULL,?NULL,?&ret);?? ?? ????/*?Create?Command?Queue?*/?? ????command_queue?=?clCreateCommandQueue(context,?device_id,?0,?&ret);?? ?? ????/*?Create?Memory?Buffer?*/?? ????memobj?=?clCreateBuffer(context,?CL_MEM_READ_WRITE,MEM_SIZE?*?sizeof(char),?NULL,?&ret);?? ????/*?Create?Kernel?Program?from?the?source?*/?? ????program?=?clCreateProgramWithSource(context,?1,?(const?char?**)&source_str,(const?size_t?*)&source_size,?&ret);?? ?? ????/*?Build?Kernel?Program?*/?? ????ret?=?clBuildProgram(program,?1,?&device_id,?NULL,?NULL,?NULL);?? ?? ????/*?Create?OpenCL?Kernel?*/?? ????kernel?=?clCreateKernel(program,?"hello",?&ret);?? ?? ????/*?Set?OpenCL?Kernel?Parameters?*/?? ????ret?=?clSetKernelArg(kernel,?0,?sizeof(cl_mem),?(void?*)&memobj);?? ?? ????/*?Execute?OpenCL?Kernel?*/?? ????ret?=?clEnqueueTask(command_queue,?kernel,?0,?NULL,NULL);?? ?? ????/*?Copy?results?from?the?memory?buffer?*/?? ????ret?=?clEnqueueReadBuffer(command_queue,?memobj,?CL_TRUE,?0,?? ????????MEM_SIZE?*?sizeof(char),string,?0,?NULL,?NULL);?? ?? ????/*?Display?Result?*/?? ????puts(string);?? ?? ????/*?Finalization?*/?? ????ret?=?clFlush(command_queue);?? ????ret?=?clFinish(command_queue);?? ????ret?=?clReleaseKernel(kernel);?? ????ret?=?clReleaseProgram(program);?? ????ret?=?clReleaseMemObject(memobj);?? ????ret?=?clReleaseCommandQueue(command_queue);?? ????ret?=?clReleaseContext(context);?? ?? ????free(source_str);?? ?? ????getchar();?? ????return?0;?? ?? }??

新建文件,后缀改成.cl,粘贴下列代码进去:

[cpp]?

view plain

copy

print

?

__kernel?void?hello(__global?char*?string)?? {?? ????string[0]?=?'H';?? ????string[1]?=?'e';?? ????string[2]?=?'l';?? ????string[3]?=?'l';?? ????string[4]?=?'o';?? ????string[5]?=?',';?? ????string[6]?=?'?';?? ????string[7]?=?'W';?? ????string[8]?=?'o';?? ????string[9]?=?'r';?? ????string[10]?=?'l';?? ????string[11]?=?'d';?? ????string[12]?=?'!';?? ????string[13]?=?'\0';?? }??

编译执行文件。

假设你的项目叫做yourproj

把下面的配置文件粘贴到,项目所在目录/yourproj/yourproj/xxx.vcxproj文件中 里面,就可以了。

然后,右键项目,“生成”,驱动就会在 项目所在目录/yourproj/driver 文件夹里。

//

//分割线

//

//

?

? ?

? ? ? Debug

? ? ? Win32

? ?

? ?

? ? ? driver

? ? ? Win32

? ?

? ?

? ? ? Release

? ? ? Win32

? ?

?

?

? ? {15853FC5-3C6E-47FE-A61F-A75B3C7DED6F}

? ? driver_buildEnv

?

?

?

? ? Application

? ? true

? ? MultiByte

?

?

? ? Application

? ? false

? ? true

? ? MultiByte

?

?

?

?

?

? ?

?

?

? ?

?

?

?

? ? $(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin;$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(FrameworkSDKDir)\bin;$(MSBuildToolsPath32);$(VSInstallDir);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH);C:\WinDDK\7600.16385.1\bin\x86;

?

?

? ? $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include;C:\WinDDK\7600.16385.1\inc\ddk;C:\WinDDK\7600.16385.1\inc\crt;C:\WinDDK\7600.16385.1\inc\api;

?

?

? ? $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKDir)\lib;C:\WinDDK\7600.16385.1\lib\win7\i386

? ? .sys

? ? false

? ? true

?

?

? ?

? ? ? Level3

? ? ? Disabled

? ?

? ?

? ? ? true

? ?

?

?

? ?

? ? ? Level3

? ? ? MaxSpeed

? ? ? true

? ? ? true

? ?

? ?

? ? ? true

? ? ? true

? ? ? true

? ?

?

?

? ?

? ? ? OldStyle

? ?

?

?

? ?

? ? ? Level2

? ?

?

?

? ?

? ? ? true

? ? ? Disabled

? ? ? WIN32=100;_X86_=1;WINVER=0x501;DBG=1;%(PreprocessorDefinitions)

? ? ? MultiThreadedDebug

? ? ? false

? ? ? StdCall

? ?

? ?

? ? ? kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB;%(AdditionalDependencies)

? ?

? ?

? ? ? true

? ? ? false

? ? ? true

? ? ? true

? ? ? $(TargetDir)$(TargetName).map

? ? ? Console

? ? ? 4194304

? ? ? 4096

? ? ? Driver

? ? ? DriverEntry

? ? ? true

? ? ? 0x10000

? ? ?

? ? ?

? ? ?

? ? ?

? ?

?

?

? ??

?

?

?

?

关灯