VS2015 CUDA9.0将SHA1_INIT与CUDA Imparion相连,而不是OpenSSL CPU LIB
vs2015 cuda9.0 linked SHA1_Init with CUDA implement instead of openssl cpu libs
我是CUDA的初学者,C ,我正在尝试将OpenSSL SHA1 CPU代码移至CUDA C,但我遇到了一个Weired问题。
这是可以重现问题的最小代码。该VS2015 CUDA9.0项目中有三个文件。它们是Main.cpp,sha1.cu和sha1.h
//main.cpp
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include "opensslsha.h"
int main()
{
SHA_CTX ctx;
SHA1_Init(&ctx);
return 0;
}
//sha1.h
#ifndef SHA1_H
#define SHA1_H
#include <stdint.h>
#include <cuda_runtime.h>
namespace cudatest {
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
uint32_t state[5];
uint32_t count[2];
unsigned char buffer[64];
} SHA1_CTX;
#define SHA_CTX SHA1_CTX
#define SHA_DIGEST_LENGTH 20
__device__ void SHA1_Init(SHA1_CTX * context);
#ifdef __cplusplus
}
#endif
}
#endif /* SHA1_H */
//sha1.cu
#include <cuda_runtime.h>
#include "sha1.h"
namespace cudatest {
__device__ void SHA1_Init(SHA1_CTX * context)
{
}
}
main.cpp使用C/C 编译器和SHA1.CU使用CUDA C/C
和我将OpenSSL标头添加到附加的包含台式中,set Directory包含ssleay32.lib和libeAy32.lib到库路径,将额外的依赖项与ssleay32.lib,libeay32.lib。
设置然后构建的项目没有错误,也没有警告。但是当我运行它 或调试它,我发现函数sha1_init运行到设备代码和 该程序立即崩溃了。
为什么编译器链接函数sha1_init与CUDA设备 SHA1_INIT实现了包装命名空间的cudatest ssleay32.lib,libeay32.lib cpu实施?
好吧,我发现问题。我不应该在c 名称空间中使用extern" c"。它使该函数可在全局名称空间中看到。如果您在.cpp文件中定义了另一个c sha1_init函数,则链接器将抱怨。但是,如果另一个sha1_init在openssl lib中,则VS C/C 链接器没有任何警告。>
相关文章:
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- JSON转换为nlohmann JSON-lib中的结构数组
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 使用 VS2015 在 Windows 10 上构建 Fortran .lib x64 位并将其链接到 C++
- 为什么我的链接器在找到Coin4d.lib后搜索Coin4sd.lib?
- libcpmtd.lib有什么用?
- LNK1104:无法打开libpjproject-i386-Win32-vc14-Debug-Static.lib
- 解析引用 |exe/dll vs lib
- 在 /usr/local/lib 下找不到库
- LLVM 编译:目标的配方 '../lib/IR/Release+Asserts/Intrinsics.gen.tmp' failed
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- VS2015 未链接用户32.lib
- 从 .lib 文件创建一个.dll文件
- 看不到文件'SDL2.lib'
- 如何使用用户定义的函数覆盖 C lib 函数,如 _sbrk?
- 如何在不需要LIBCD.lib的情况下在Visual Studio 6中编译C项目
- 可执行文件C++包括.obj,.lib和.dll吗?
- 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
- 无法在 DLL 中链接 SDL2-static.lib
- VS2015 CUDA9.0将SHA1_INIT与CUDA Imparion相连,而不是OpenSSL CPU LIB