作者aada (aada)
看板C_and_CPP
标题Re: [问题] CUDA 光学绕射 error
时间Fri Nov 20 15:59:29 2009
以下是我执行的程式过程,
1.建立一个CUDA专案(空专案)
2. 依照
http://thegwolibrary.sourceforge.net/ 将专案设定好
3. 把sample code贴上-->执行
一开始没加#include "stdafx.h"时,
complie没过,说是否缺乏#include "stdafx.h",
後来我加上它後,complie过了,但是出现24个错误,
#include "gwo.h"
#include "stdafx.h"
#define WIDTH 512
#define HEIGHT 512
#define WIDTH2 (WIDTH*2)
#define HEIGHT2 (HEIGHT*2)
float gwo_max=0.0, gwo_min=0.0;
//gwoComplex is the complex number.
//if you use to the real part of gwoComplex, please use GWO_RE(...).
//if you use to the imaginary part of gwoComplex, please use GWO_IM(...).
gwoComplex ape_small[WIDTH*WIDTH];
gwoComplex ape[WIDTH2*HEIGHT2];
gwoComplex result[WIDTH*HEIGHT];
unsigned char pix[WIDTH*WIDTH];
void main()
{
//Prepare an aperture with 20*20 pixel.
for(int i=0;i<HEIGHT;i++)
{
for(int j=0;j<WIDTH;j++)
{
if(j>WIDTH/2-10 && j<WIDTH/2+10 && i>HEIGHT/2-10 && i<HEIGHT/2+10)
{
GWO_RE(ape_small[(j)+(i)*WIDTH])=1.0;
GWO_IM(ape_small[(j)+(i)*WIDTH])=0.0;
}
}
}
//Initialize the library.
gwoInit(GWO_ANGULAR,WIDTH2,HEIGHT2); //if you calculate the Angular
spectrum
//gwoInit(GWO_FRESNEL_CONV,WIDTH2,HEIGHT2);//if you calculate the Fresnel
difraction(convolution type)
//gwoInit(GWO_SHIFTED_FRESNEL,WIDTH2,HEIGHT2);////if you calculate the
Shifted-Fresnel difraction
//Expands the original aperture (ape_small).
//The expanded aperture (ape) has double size as compared with the
original aperture.
gwoHostExpandC2C(
ape_small,WIDTH,HEIGHT,
ape,WIDTH2,HEIGHT2);
//Set the sampling spacing (4.65 um) on the aperture and the diffracted
plane.
gwoSetPitch(4.65e-6, 4.65e-6);
//Set the wavelength (633nm).
gwoSetWaveLength(633.0e-9);
//Send the expanded aperture to the GPU.
gwoSendData(ape);
//Calculate the diffraction with the propagation distance of 0.2m.
gwoCalc(0.2);
//If you need the light intensity of the diffracted light,
//please execute gwoIntensity().
//If you do not need the light intensity,
//please comment out gwoIntensity();
gwoIntensity();
//The host computer receives the calculated result (the diffracted
result).
gwoReceiveResult(ape);
//Reduce the expanded aperture (ape) to the buffer (result).
gwoHostExpandC2C(
ape,WIDTH2,HEIGHT2,
result,WIDTH,HEIGHT);
//Search the maximum and minimum value in the buffer (result).
gwoHostSearchMaxMin(result,&gwo_max,&gwo_min,WIDTH,HEIGHT);
//Convert the light intensity to 256 monochrome image.
for(int i=0;i<HEIGHT;i++)
{
for(int j=0;j<WIDTH;j++)
{
float tmp=GWO_RE(result[j+i*WIDTH]);
unsigned char c=(unsigned char)(255.0*(tmp-gwo_min)/gwo_max);
pix[j+i*WIDTH]=c;
}
}
//Finalize the library.
gwoFree();
}
%%%%%%%%%%%%%%%%%%%% 错误 %%%%%%%%%%%%%%%%%%%
1>------ 已开始建置: 专案: popop, 组态: Debug Win32 ------
1>正在连结...
1>popop.obj : warning LNK4075: 忽略 '/EDITANDCONTINUE',由於
'/INCREMENTAL:NO' 规格
1>popop.obj : error LNK2005: _main 已在 sample.obj 中定义过了
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void
*)" (??3@YAXPAX@Z) 已在 LIBCMT.lib(delete.obj) 中定义过了
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __heap_alloc 已在
LIBCMT.lib(malloc.obj) 中定义过了
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __recalloc 已在
LIBCMT.lib(recalloc.obj) 中定义过了
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __msize 已在
LIBCMT.lib(msize.obj) 中定义过了
1>libcmtd.lib(malloc.obj) : error LNK2005: _V6_HeapAlloc 已在
LIBCMT.lib(malloc.obj) 中定义过了
1>libcmtd.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook 已在
LIBCMT.lib(dbghook.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: __get_sbh_threshold 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: __set_sbh_threshold 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: __set_amblksiz 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: __get_amblksiz 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heap_init 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_find_block 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_free_block 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_block 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_region 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_group 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_resize_block 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heapmin 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heap_check 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_pHeaderDefer 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(isctype.obj) : error LNK2005: __isctype_l 已在
LIBCMT.lib(isctype.obj) 中定义过了
1>libcmtd.lib(isctype.obj) : error LNK2005: __isctype 已在
LIBCMT.lib(isctype.obj) 中定义过了
1>LINK : warning LNK4098: 预设的程式库 'libcmtd.lib' 与其他使用的程式库冲突,
请使用 /NODEFAULTLIB:library
1>C:\Documents and Settings\XP\My Documents\Visual Studio
2008\Projects\CUDA\popop\Debug\popop.exe : fatal error LNK1169: 找到有一或多个
已定义的符号
1>已将建置记录储存於 "file://c:\Documents and Settings\XP\My Documents\Visual
Studio 2008\Projects\CUDA\popop\popop\Debug\BuildLog.htm"
1>popop - 24 个错误,2 个警告
========== 建置: 0 成功、1 失败、0 最新、0 略过 ==========1>------ 已开始建置: 专案: popop, 组态: Debug Win32 ------
1>正在连结...
1>popop.obj : warning LNK4075: 忽略 '/EDITANDCONTINUE',由於
'/INCREMENTAL:NO' 规格
1>popop.obj : error LNK2005: _main 已在 sample.obj 中定义过了
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void
*)" (??3@YAXPAX@Z) 已在 LIBCMT.lib(delete.obj) 中定义过了
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __heap_alloc 已在
LIBCMT.lib(malloc.obj) 中定义过了
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __recalloc 已在
LIBCMT.lib(recalloc.obj) 中定义过了
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __msize 已在
LIBCMT.lib(msize.obj) 中定义过了
1>libcmtd.lib(malloc.obj) : error LNK2005: _V6_HeapAlloc 已在
LIBCMT.lib(malloc.obj) 中定义过了
1>libcmtd.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook 已在
LIBCMT.lib(dbghook.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: __get_sbh_threshold 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: __set_sbh_threshold 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: __set_amblksiz 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: __get_amblksiz 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heap_init 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_find_block 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_free_block 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_block 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_region 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_alloc_new_group 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_resize_block 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heapmin 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_heap_check 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(sbheap.obj) : error LNK2005: ___sbh_pHeaderDefer 已在
LIBCMT.lib(sbheap.obj) 中定义过了
1>libcmtd.lib(isctype.obj) : error LNK2005: __isctype_l 已在
LIBCMT.lib(isctype.obj) 中定义过了
1>libcmtd.lib(isctype.obj) : error LNK2005: __isctype 已在
LIBCMT.lib(isctype.obj) 中定义过了
1>LINK : warning LNK4098: 预设的程式库 'libcmtd.lib' 与其他使用的程式库冲突,
请使用 /NODEFAULTLIB:library
1>C:\Documents and Settings\XP\My Documents\Visual Studio
2008\Projects\CUDA\popop\Debug\popop.exe : fatal error LNK1169: 找到有一或多个
已定义的符号
1>已将建置记录储存於 "file://c:\Documents and Settings\XP\My Documents\Visual
Studio 2008\Projects\CUDA\popop\popop\Debug\BuildLog.htm"
1>popop - 24 个错误,2 个警告
========== 建置: 0 成功、1 失败、0 最新、0 略过 ==========
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.193.103