.netcore类库找不到main函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.netcore类库找不到main函数相关的知识,希望对你有一定的参考价值。

原因如下,1、检验Main函数的写法: public static void main(String XXX[])
2、检验JDK是否出错: 打开C盘->Program Files->Java,看是否有jdk1.6.0或其它版本的文件夹,如果没有赶紧去Sun的官方网站下载。
3、检验环境变量: 右键点击我的电脑,选择属性->高级->环境变量,看CLASSPATH是否包括jdk包的bin地址。JBuilder2006会自动更改该变量,但有可能安装出错了。(JBuilder通常用自己的jdk)
4、测试: 创建一个简单的java文件,点击开始,打开“运行”,输入cmd,输入javac XXX.java,然后java XXX,看是否还出现此错误5、将编写的java文件找到。
点击查看全文

淘宝除尘器 生产厂家千万商品,品类齐全,千万别错过!
淘宝超值除尘器 生产厂家,优享品质,惊喜价格,商品齐全,淘你满意!上淘宝,惊喜随处可淘!
淘宝热卖广告
投影仪京东劲爆低价购新机!
投影仪-「京东」手机焕新季,优选各种热门机型,游戏和拍照兼具的"潮机"都在这里!
京东广告
大家还在搜
闲来斗地主闲来斗地主
亲子鉴定大概要多少钱
app开发价格表
大兴金茂悦
育苗袋批发
瘦腿针
上海培训
口红品牌
更多专家
在给定的源文件中找不到main()函数
专家1对1在线解答问题
5分钟内响应 | 万名专业答主
马上提问
最美的花火 咨询一个电子数码问题,并发表了好评
lanqiuwangzi 咨询一个电子数码问题,并发表了好评
garlic 咨询一个电子数码问题,并发表了好评
188****8493 咨询一个电子数码问题,并发表了好评
篮球大图 咨询一个电子数码问题,并发表了好评
动物乐园 咨询一个电子数码问题,并发表了好评
AKA 咨询一个电子数码问题,并发表了好评
— 为你推荐更多精彩内容 —
参考技术A 找不到main()函数的解决办法:
1、检验Main函数的写法: public static void main(String XXX[])
2、检验JDK是否出错: 打开C盘->Program Files->Java,看是否有jdk1.6.0或其它版本的文件夹,如果没有赶紧去Sun的官方网站下载。
3、检验环境变量: 右键点击我的电脑,选择属性->高级->环境变量,看CLASSPATH是否包括jdk包的bin地址。JBuilder2006会自动更改该变量,但有可能安装出错了。(JBuilder通常用自己的jdk)
4、测试: 创建一个简单的java文件,点击开始,打开“运行”,输入cmd,输入javac XXX.java,然后java XXX,看是否还出现此错误5、将编写的java文件找到。

由于C++类库版本不同导致的OpenCV编译链接错误

太长不看版:GCC4和GCC5使用的C++标准库下,string的名字不一样,导致链接错误。

之前在Ubuntu下使用OpenCV的时候一切正常。后来再次编译的时候,连接器提示有些库函数找不到:

main.o:在函数‘main’中:
main.cpp:15:对‘cv::imread(std::string const&, int)’未定义的引用
main.cpp:22:对‘cv::namedWindow(std::string const&, int)’未定义的引用
main.cpp:23:对‘cv::imshow(std::string const&, cv::_InputArray const&)’未定义的引用
collect2: error: ld returned 1 exit status

源文件里还使用了其他的库函数,为什么只有这几个函数找不到?后来排除了大量错误,确定不是因为找不到库文件,坑爹的bug。。。

对输出的目标文件进行分析,列出其符号表:nm -c main.cpp.o ,发现它引用了外部的符号:

...
                 U cv::imread(std::string const&, int)
                 U cv::namedWindow(std::string const&, int)
                 U cv::imshow(std::string const&, cv::_InputArray const&)
...

查找资料,得知这些函数来自opencv_highgui库文件(/usr/lib/x86_64-linux-gnu/libopencv_highgui.so ),同样可以列出它的符号表nm -C opencv_highgui.a(对应的静态库):

...
0000000000000000 T cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)
0000000000000000 T cv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)
0000000000000000 T cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)
...

能够看出库函数的原型,和我自己的程序中的原型不一致。仔细对比,是标准库string的名字不一样。我自己的程序里是std::string 在库里是std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >

后来才想起,前段时间为了兼容MATLAB安装了GCC4.9版本(和C++标准库)。再恢复GCC5.x版本编译、链接,没有再次出现问题。

总结一下,是因为我的OpenCV库是Ubuntu官方使用C++5的标准库编译出来的,而自己写的程序是C++4.9的库。两个库里标准库string的名字在目标代码里不一样,导致无法链接。

以上是关于.netcore类库找不到main函数的主要内容,如果未能解决你的问题,请参考以下文章

定义的函数在main中调用时提示找不到标识符

在c语言中自定义了一个函数,在main中调用时提示找不到标识符,怎么办?

MFC没有main函数也可以执行吗?急

java中已经定义了main函数,运行报错类中找不到主方法,求大神解答是啥原因!

C# dll里main函数如何运行

Prism.Wpf从自定义Main函数中启动遇到的问题