更新:
主文件

typedef struct
{
    float x;
    float y;
    float z;
}vec3;
const int sizeOfGrid = 20000;
vec3 *grid[sizeOfGrid];//assume initialized


main.cpp

#include "main.h"
extern "C" void cudaTranslate(vec3 *x);
void display()
{
    cudaTranslate(grid);
}


lineCuda.cu

#include <stdio.h>
#include <assert.h>
#include <cuda.h>
#include "main.h"

extern "C" void cudaTranslate(vec3 *x)
{

}


得到:
main.obj:错误LNK2005:“ struct vec3 * *网格”(?grid @@ 3PAPAUvec3 @@ A)已在lineCuda.obj中定义
严重错误LNK1169:找到一个或多个乘法定义的符号

最佳答案

将网格移到main.cpp。将其传递给lineCuda.cu。问题解决了。

更新:
主文件

typedef struct
{
    float x;
    float y;
    float z;
}vec3;
const int sizeOfGrid = 20000;


main.cpp

#include "main.h"
vec3 *grid[sizeOfGrid];//assume initialized
extern "C" void cudaTranslate(vec3 *x);
void display()
{
    cudaTranslate(grid);
}

关于c++ - 如何将结构从C++传递给C?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5131329/

10-11 17:07