我有cuda代碼,它調用了存在於我的cuda代碼中包含的頭文件的.c文件中的函數。所以,我有一個頭文件,頭文件的C文件和一個CUDA代碼。當我使用nvcc編譯我的CUDA代碼並指定我的cuda代碼名稱和c文件名時,我得到了未定義的對我在CUDA代碼中調用的函數的引用,這些函數實際存在於我的C文件中。請幫助我瞭解我做錯了什麼,以及如何解決我的錯誤。從我的CUDA代碼進行C函數調用
好吧我粘貼我的代碼在下面......我沒有發佈它最初是因爲我認爲它是一個鏈接器錯誤或什麼的。
#include "dbConnection.h"
#include "error.h"
#include "libpq-fe.h"
#include <stdio.h>
#include <stdlib.h>
#include "appCompileSwitches.h"
int makeConnection(PGconn** conn,const char* connInfo);
void executeQuery(PGconn* conn,PGresult** res,char* statement,int* rows,int* columns);
/***************************************
* main(), enough said
****************************************/
int main(int argc, char **argv)
{
PGconn *conn = NULL;
PGresult *res= NULL;
float** result;
char* statement = "select visit_no,brand_name from visit_sample limit 3";
int rows=0,columns=0; // WILL BE USED TO CUDAMALLOC gpu memory
const char* connInfo = "dbname = moxy";
if(!makeConnection(&conn,connInfo))
{
printf("failed to connect to Database!\n");
return FAILURE;
}
}
的dbConnection.c文件有:
#include <stdio.h>
#include <stdlib.h>
#include "libpq-fe.h"
#include <string.h>
#include "dbConnection.h"
#include "error.h"
#include "appCompileSwitches.h"
/****************************************************
* close database connection, given connecton info
****************************************************/
static void closeConnection(PGconn *conn)
{
/* close the connection to the database and cleanup */
PQfinish(conn);
}
/****************************************************
* connect to the database
* given the connInfo
****************************************************/
extern int makeConnection(PGconn** conn,const char* connInfo)
{
/* Make a connection to the database */
*conn = PQconnectdb(connInfo);
if (PQstatus(*conn) != CONNECTION_OK)
{
fprintf(stderr, "Connection to database failed: %s",PQerrorMessage(*conn));
PQfinish(*conn);
return FAILURE;
}
return SUCCESS;
}
所以,當我做:
nvcc DB.cu dbConnection.c -o DB
我越來越未定義的引用進行連接。 此外,我將在稍後將我從數據庫獲得的數據傳輸到GPGPU,這是本練習的重點,所以請不要說我在這裏沒有CUDA調用。這是一個仍在開發中的代碼。
您需要發佈您的代碼。沒有看到它,人們怎麼可能迴應? –