合并两个vs解决方案:
不能
下载别人的vs程序易出现sdk不符合等问题 项目右键属性 目标版本平台, 平台工具集 都改为自己已有的就行了,还要注意配置和平台对应哦
1.问题:
“Callback”:模板 从属名称的使用必须以模板为前缀
解决:项目右键->属性-> C/C++ ->语言->符合模式 –>否
原因:编译器本来应该调用callback模板函数,但是你的代码中又使用了作为函数参数的callback类型,这样在调用callback的时候编译器不知道使用callback的哪个具体模板了。Ss
2.问题:不在开发者模式
解决:打开电脑的windows设置 ->更新与安全->开发者选项->开发人员模式->是
3. 问题一:无法解析的外部符号 _WinMain@16,该符号在函数“int_cdecl invoke_main(void)”(?invoke_main@@YAHXZ)中被引用
解决:1)如果是windows应用程序:
项目右键->属性-> C/C++ ->预处理器->预处理器定义->删除_CONSOLE,添加_WINDOWS
项目右键->属性-> 链接器 ->系统->子系统->设置为窗口 (/SUBSYSTEM:WINDOWS)
如果是控制台程序:
项目右键->属性-> C/C++ ->预处理器->预处理器定义->删除_WINDOWS,添加_CONSOLE
项目右键->属性-> 链接器 ->系统->子系统->设置为控制台 (/SUBSYSTEM:CONSOLE)
原因:入口函数指定不当,即新建项目时windows应用程序和控制台应用程序选择与实际执行代码不符
问题二:error LNK: 无法解析的外部符号 "public: __cdeclXX(void)" (??0C@@QEAA@XZ),该符号在函数 main 中被引用
解决1:在文件里删除此方法(若不需要此方法)
解决2:属性里缺少对应的lib文件。
问题三:opengl文件
1>PT.obj : error LNK: 无法解析的外部符号 _auxSolidSphere@8,该符号在函数 _main 中被引用
1>PT.obj : error LNK: 无法解析的外部符号 _auxInitWindowA@4,该符号在函数 _main 中被引用
1>PT.obj : error LNK: 无法解析的外部符号 _auxInitPosition@16,该符号在函数 _main 中被引用
PT.obj : error LNK: 无法解析的外部符号 _auxInitDisplayMode@4,该符号在函数 _main 中被引用
解决:项目——项目属性——配置属性——链接器——输入——附加依赖项,添加
glut32.lib
Opengl32.lib
Glu32.lib
glaux.lib
glfw3.lib
glew32s.lib
freeglut.lib
glut.lib
问题四:
无法解析的外部符号 _glfwInit,该符号在函数 _main 中被引用
解决方法就是在程序的开头加入下面这一行:
#pragma comment(lib,"glfw.lib");
4. 深度清理C盘空间
Windows -> 设置->系统->存储->C盘
5. 编译提示警告被视为错误,没有生成object文件
项目->属性->c/c++->常规->将警告视为错误->否,注意是否涉及多个项目的属性
原因:该文件的代码页为英文,而我们系统中的代码页为中文
6.编译后显示多个不同的错误,有时解决一个错误,其他错误会消失。
7.编译成功,调试时提示:执行位置 0x0000000000000000 时发生访问冲突或者说是有未经处理的异常
项目->属性->链接器->系统->堆栈保留大小->16000000
原因:代码本身没有错误,内存写入错误,开发环境的默认配置不满足此代码的要求
8.SDK版本问题,版本不符合
在visual studio安装包即 笔记本左下角“开始”找到visual studio staller 点击 修改 页面右边选择sdk版本进行安装,然后对项目右键重定向项目,选择正确的sdk版本即可。
9.问题:D:\xxxx\xxxx.vcxproj : error : 无法读取项目文件“xxxx.csproj”。
D:\xxxx\xxxx.vcxproj( ): 未找到导入的项目“C:…..\xxxx.targets”。请确认 import 声明中的路径正确,且磁盘上存在该文件。
解决:1)这时用记事本打开xxxx.vcxproj
<Import Project=....... />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">1234
找到`诸如这样的 Import 标签对 ,和你未导入的项目“C:…..\xxxx.targets”,把“C:…..\xxxx.targets”所在的 Import 行删除就可以了。注意,可能有多个,要全部删除。最后重新加载项目即可。
提醒一下,为了以后代码的可移植性,尽量少使用属性表,或者把属性表复制到工程内。
2)版本升级 参考:升级CUDA
升级版本时也会出现以上提示,同样用记事本打开xxxx.vcxproj,找到软件所在的Import标签对,修改版本号就可以了。
如:
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 5.5.props" />
修改CUDA的版本号即可
10.问题:The CUDA Toolkit v10.0 directory '' does not exist. Please verify the CUDA Toolkit is installed properly or define the CudaToolkitDir property to
resolve this error.
解决:项目属性-> CUDA C/C++ -> CUDA Toolkit Custom Dir 中填写自己的CUDA安装路径
11.问题:各种工具栏在 菜单的 工具-> 自定义上设置
12.问题:对路径XXXXXXXX的访问被拒绝
解决:右键打开报错路径的的菜单,选择“属性”;在“属性”窗体中切换到“安全”选项框;在“安全”选项框中,点击“编辑”,进入“权限”窗体;在“用户和组”中选择“IIS_USRS”,赋予其“完全控制”权限。
13.问题:该文件包含不能在当前代码页(936)中表示的字符。
解决:点击错误提示,打开报错的文件。点“文件”–>“高级保存”; 根据错误提示,选择正确的格式保存。
14
error: more than one instance of overloaded function "__hadd" matches the argument list
解决方案
修改代码
EIGEN_STRONG_INLINE __device__ half operator + (const half& a, const half& b) {
+ #if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
+ return __hadd(::__half(a), ::__half(b));
+ #else
return __hadd(a, b);
+ #endif
}
EIGEN_STRONG_INLINE __device__ half operator * (const half& a, const half& b) {
return __hmul(a, b);
return __hsub(a, b);
}
EIGEN_STRONG_INLINE __device__ half operator / (const half& a, const half& b) {
+ #if defined(EIGEN_CUDACC_VER) && EIGEN_CUDACC_VER >= 90000
+ return __hdiv(a, b);
+ #else
float num = __half2float(a);
float denom = __half2float(b);
return __float2half(num / denom);
+ #endif
}
EIGEN_STRONG_INLINE __device__ half operator - (const half& a) {
return __hneg(a);
15.无法打开输入文件 xxx.lib
解决:方法1. 在项目属性,链接器,常规,附加库目录 应该是项目的lib地址和自己放置的绝对地址不吻合,找到项目的lib文件并修改为本机的地址,并在项目属性,链接器,输入,附加依赖项中加入自己的lib文件名称(注意在debug模式还是release模式)
(不推荐)方法2.在C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64 添加此lib文件,一般此文件在项目文件目录lib/release中,自己在网上找的lib文件易不符合此项目而报错。
16.注释快捷键
打注释:Ctrl+k,Ctrl+c
取消注释 Ctrl+k,Ctrl+u
17.程序缺少*.dll文件
网上找到此dll文件,拷贝进项目生成的.exe文件目录下。
18.无法打开.lib, 或者其他 .h文件(cuda相关的)
解决一:或许是配置属性的问题:
VC++目录->包含目录: (安装cuda时已经选择了sample文件就不用写第三个目录了。)
VC++目录->库目录:
解决二:
注意这个地方一般是release x64
20. LNK1112 模块计算机类型“x64”与目标计算机类型“X86”冲突
解决方法:运行CMake,点 configure,在弹出的对话框内选择 Visual Studio ,这个地方需要注意,第二行选win64,完成后选择“Generate”。
21. debug模式和release模式有点区别
Release 下无法定位程序输入点于动态链接库xxx.dll
将dll文件移动到release目录下(和exe文件相同位置) 不一定能成功
因为它有 相互依赖的dll 需要把多个dll文件都放到这个目录下才可以成功