Я написал некоторый код, который использует преимущества CUDA, и я хотел бы связать его с моим. net приложением.
Вот что я сделал:
- Написал функция со следующим определением:
typedef double CalcType;
bool CalculateWeights(CalcType * result1,
CalcType *result2,
CalcType *result3,
CalcType *result4,
CalcType *input1,
CalcType *input2,
CalcType *input3,
CalcType *input4,
int size1, int size2);
В свойствах проекта-> Общие-> Проект по умолчанию я установил
Configuration type
на
Static Library (.lib)
Я создал управляемую библиотеку c ++, вручную добавил к ней определение функции (1) и реализовал Обертка вокруг него, поэтому его можно вызывать из управляемого кода.
В выходном каталоге я обнаружил project.lib
, зашел в свойства управляемого проекта, добавил:
каталог, в котором файл lib находится в свойствах-> Linker-> General-> каталоги дополнительных библиотек
полный путь к файлу .lib для свойства -> Линкер-> Ввод-> Дополнительные зависимости
Когда я пытаюсь скомпилировать, я все еще получаю следующую ошибку:
error LNK2019: unresolved external symbol "bool __cdecl CalculateWeights(double *,double *,double *,double *,double *,double *,double *,double *,int,int)"
Я работаю в Visual Studio 2017
Вот полная командная строка компоновщика:
/OUT:"myDirectory\cudaProxy.dll" /MANIFEST /NXCOMPAT /PDB:"myDirectory\cudaProxy.pdb" /DYNAMICBASE "path_to_lib_file\my_lib_file.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /FIXED:NO /DEBUG:FULL /DLL /MACHINE:X86 /INCREMENTAL /PGD:"myDirectory" /ASSEMBLYDEBUG /TLBID:1
Что я пропустил?