使用VC调用别人用Delphi做的动态库访问冲突且无法加载请问是什么原因呢?

因为最近要做个PC与PLC通信的软件,因此在网上找到一个人用Delphi写的PLC通信dll库,应该是32位。我用VC2015写了个MFC要调用这个dll发现总是提示访问冲突,调用失败。因为有其他人是写图像处理的,环境必须要用VC 2015。但是和那个人联系他说其他人用了是没问题的,我因为是刚开始学这个软件,也没有dll源码,不知道问题出在哪。下面是我程序的源码,其他dll内函数声明我都还没用,只是用LoadlibraryA发现就已经失败了。**如果有朋友能在32位(64位更好)的C++ MFC环境下解决并调试成功的话,必有感谢。**

引用线内部分是我添加的,其他都是向导生成的。附件里面有调用的库。

图片说明
dll地址:h1ttps://pan.baidu.com/s/1chKfBqmRsmDmvfMqt31RNg


// MFC-PLC21Dlg.cpp : 实现文件
//

#include "stdafx.h"
#include "MFC-PLC21.h"
#include "MFC-PLC21Dlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

/////////////////////////////////////////////////////////////////
HINSTANCE hinstDLL;

typedef int(_stdcall *pOpen)(int nport, int BaudRate, int DataBits, char* Parity, int StopBits, char* User);
typedef int(_stdcall *pClose)(int nport);
typedef int(_stdcall *pSetDelay)(int value);
typedef int(_stdcall *pComTrue)(int nport);
typedef int(_stdcall *pComWork)(int nport);

typedef int(_stdcall *pReadBit)(int nport, int node, char* element, int address, int Bit);
typedef int(_stdcall *pReadByte)(int nport, int node, char* element, int address, int Count, int* RxdBuffer);
typedef int(_stdcall *pReadInt)(int nport, int node, char* element, int address, int Count, int* RxdBuffer);
typedef int(_stdcall *pReadDInt)(int nport, int node, char* element, int address, int Count, int* RxdBuffer);
typedef int(_stdcall *pReadFloat)(int nport, int node, char* element, int address, int Count, float* RxdBuffer);

typedef int(_stdcall *pBitWrite)(int nport, int node, char* element, int address, int Bit, int value);
typedef int(_stdcall *pBitEWrite)(int nport, int node, char* element, int address, int Bit, int value);
typedef int(_stdcall *pEbitCancel)(int nport, int node, char* element, int address, int Bit);

typedef int(_stdcall *pWriteByte)(int nport, int node, char* element, int address, int Count, int* TxdBuffer);
typedef int(_stdcall *pWriteInt)(int nport, int node, char* element, int address, int Count, int* TxdBuffer);
typedef int(_stdcall *pWriteDInt)(int nport, int node, char* element, int address, int Count, int* TxdBuffer);
typedef int(_stdcall *pWriteFloat)(int nport, int node, char* element, int address, int Count, float* TxdBuffer);

typedef int(_stdcall *pPlcRun)(int nport, int node);
typedef int(_stdcall *pPlcStop)(int nport, int node);

typedef int(_stdcall *pBitBin)(int value, int Bitaddress);
typedef int(_stdcall *p16I_8h)(int value);
typedef int(_stdcall *p16I_8l)(int value);
typedef int(_stdcall *p8I_16I)(int valueH, int valueL);
typedef int(_stdcall *p32I_16h)(int value);
typedef int(_stdcall *p32I_16l)(int value);
typedef int(_stdcall *p16I_32I)(int valueH, int valueL);
typedef int(_stdcall *p32f_16h)(float value);
typedef int(_stdcall *p32f_16l)(float value);
typedef float(_stdcall *p16I_32f)(int valueH, int valueL);

pOpen mOpen;
pClose mClose;
pSetDelay mSetDelay;
pComTrue mComTrue;
pComWork mComWork;

pReadBit mReadBit;
pReadByte mReadByte;
pReadInt mReadInt;
pReadDInt mReadDInt;
pReadFloat mReadFloat;

pBitWrite mBitWrite;
pBitEWrite mBitEWrite;
pEbitCancel mEbitCancel;

pWriteByte mWriteByte;
pWriteInt mWriteInt;
pWriteDInt mWriteDInt;
pWriteFloat mWriteFloat;

pPlcRun mPlcRun;
pPlcStop mPlcStop;

pBitBin mBitBin;
p16I_8h m16I_8h;
p16I_8l m16I_8l;
p8I_16I m8I_16I;
p32I_16h m32I_16h;
p32I_16l m32I_16l;
p16I_32I m16I_32I;
p32f_16h m32f_16h;
p32f_16l m32f_16l;
p16I_32f m16I_32f;
///////////////////////////////////////////////////////////////

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
    CAboutDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
    enum { IDD = IDD_ABOUTBOX };
#endif

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// CMFCPLC21Dlg 对话框



CMFCPLC21Dlg::CMFCPLC21Dlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(IDD_MFCPLC21_DIALOG, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFCPLC21Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMFCPLC21Dlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(Test, &CMFCPLC21Dlg::OnBnClickedTest)
END_MESSAGE_MAP()


// CMFCPLC21Dlg 消息处理程序

BOOL CMFCPLC21Dlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 将“关于...”菜单项添加到系统菜单中。

    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);         // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    // TODO: 在此添加额外的初始化代码



    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CMFCPLC21Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialogEx::OnSysCommand(nID, lParam);
    }
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CMFCPLC21Dlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // 用于绘制的设备上下文

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // 使图标在工作区矩形中居中
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // 绘制图标
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialogEx::OnPaint();
    }
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CMFCPLC21Dlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
}


/////////////////////////////////////////////////////////////////////
void CMFCPLC21Dlg::OnBnClickedTest()
{
    // TODO: 在此添加控件通知处理程序代码
    hinstDLL = LoadLibraryA("S7200_PPI.dll");
    if (hinstDLL)
    {
        mOpen = (pOpen)GetProcAddress(hinstDLL, "S7200ComOpen");
        mClose = (pClose)GetProcAddress(hinstDLL, "S7200ComClose");
        mSetDelay = (pSetDelay)GetProcAddress(hinstDLL, "S7200SetDelay");
        mComTrue = (pComTrue)GetProcAddress(hinstDLL, "S7200ComTrue");
        mComWork = (pComWork)GetProcAddress(hinstDLL, "S7200ComWork");

        mReadBit = (pReadBit)GetProcAddress(hinstDLL, "S7200BitRead");
        mReadByte = (pReadByte)GetProcAddress(hinstDLL, "S7200ByteRead");
        mReadInt = (pReadInt)GetProcAddress(hinstDLL, "S7200WordRead");
        mReadDInt = (pReadDInt)GetProcAddress(hinstDLL, "S7200DwordRead");
        mReadFloat = (pReadFloat)GetProcAddress(hinstDLL, "S7200FloatRead");

        mBitWrite = (pBitWrite)GetProcAddress(hinstDLL, "S7200BitWrite");
        mBitEWrite = (pBitEWrite)GetProcAddress(hinstDLL, "S7200BitEWrite");
        mEbitCancel = (pEbitCancel)GetProcAddress(hinstDLL, "S7200EbitCancel");

        mWriteByte = (pWriteByte)GetProcAddress(hinstDLL, "S7200ByteWrite");
        mWriteInt = (pWriteInt)GetProcAddress(hinstDLL, "S7200WordWrite");
        mWriteDInt = (pWriteDInt)GetProcAddress(hinstDLL, "S7200DwordWrite");
        mWriteFloat = (pWriteFloat)GetProcAddress(hinstDLL, "S7200FloatWrite");

        mPlcRun = (pPlcRun)GetProcAddress(hinstDLL, "S7200PlcRun");
        mPlcStop = (pPlcStop)GetProcAddress(hinstDLL, "S7200PlcStop");

        mBitBin = (pBitBin)GetProcAddress(hinstDLL, "DecBitBin");
        m16I_8h = (p16I_8h)GetProcAddress(hinstDLL, "Int16ToInt_8h");
        m16I_8l = (p16I_8l)GetProcAddress(hinstDLL, "Int16ToInt_8l");
        m8I_16I = (p8I_16I)GetProcAddress(hinstDLL, "Int8ToInt16");
        m32I_16h = (p32I_16h)GetProcAddress(hinstDLL, "Int32ToInt_16h");
        m32I_16l = (p32I_16l)GetProcAddress(hinstDLL, "Int32ToInt_16l");
        m16I_32I = (p16I_32I)GetProcAddress(hinstDLL, "Int16ToInt32");
        m32f_16h = (p32f_16h)GetProcAddress(hinstDLL, "Float32ToInt_16h");
        m32f_16l = (p32f_16l)GetProcAddress(hinstDLL, "Float32ToInt_16l");
        m16I_32f = (p16I_32f)GetProcAddress(hinstDLL, "Int16ToFloat32");

        AfxMessageBox(L"S7200_PPI.dll已成功载入!");
    }
    else
    {
        AfxMessageBox(L"没找到S7200_PPI.dll!");
        SendMessage(WM_CLOSE);
    }
}
///////////////////////////////////////////////////////////

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请问,如果VC++6成功调用动态链接库了,那么Qt是不是也可以成功调用库?
请问,如果VC++6成功调用动态链接库了,那么Qt是不是也可以成功调用库?
在VC环境下,使用动态链接库编程
在VC中使用动态链接库编写四则运算(减法、乘法、除法);并编写一个字符串加密和解密算法。 例如,在VC++中new一个Win32 Dynamic-Link Library工程,工程名为lib,然建立一个Win32 Console Appliction工程,工程名为TestDLL
VS2010 vc如何生成dll文件,如何调用dll动态库
求解VS2010 vc如何生成dll文件,如何调用dll动态库
VC2013动态库可以调用静态库(.lib)文件吗
我创建了一个c++静态库(比如a.lib),然后想引用到另一个项目b中去,这个项目如果设置同样生成静态库,就正常编译后生成b.lib,但是我需要的是动态库(b.dll),然而当我将属性页配置类型改为动态库再编译时提示“error LNK1104:无法打开文件a.lib”。难道动态库不能引用静态库文件吗?
MFC编写的程序能否用VC++来编译,还是说只能用VS2010++来编译的?
MFC编写的程序能否用VC++来编译,还是说只能用VS2010++来编译的?
关于turbo和vc++的main函数的定义有什么地方不同需要注意
关于turbo和vc++的main函数的定义有什么地方不同需要注意,谢谢,为什么代码不通过
opnet与vc联合调试出现R6034错误
opnet14.5+ VS2005+ win10 进行仿真模拟时错误如图 ![图片说明](https://img-ask.csdn.net/upload/202001/08/1578454512_930169.png) opnet安装在D:/opnet VS装在D:/VS2005 网上说的复制manifest我也做了,mt.exe/cl等等操作也正确 ![图片说明](https://img-ask.csdn.net/upload/202001/08/1578454922_65689.png) 环境变量根据安装文档设置,路径也都改为了D盘 /*安装过opnet的朋友肯定见过这份安装文档*/ ![图片说明](https://img-ask.csdn.net/upload/202001/08/1578454758_174060.png) 想知道问题出在哪里
VC++ MFC getwindowtext(),使用提示的错误原因是什么
VC++ MFC getwindowtext(),使用提示的错误原因是什么 int num1,num2,num3; char ch1[12],ch2[12],ch3[12]; m_edit1.GetWindowText(ch1); //在ch1后面不标注长度,会提示出错,size 主要是什么作用 m_edit2.GetWindowText(ch2,12); num1=_ttoi(ch1); num2=_ttoi(ch2); num3=num1+num2; _itot(num3,ch3,10); m_edit3.SetWindowText(ch3); 错误提示: C:\Program Files (x86)\Microsoft Visual Studio\HD_RZG_CiTOS_4.5_EX\HD_RZG_CiTOS_4.5_EX\04_SRC\plan\project\test3\test3Dlg.cpp(270) : error C2664: 'void __thiscall CWnd::GetWindowTextA(class CString &) const' : cannot convert parameter 1 from 'char [ 12]' to 'class CString &
VC++ 使用CRectTracker移动多个图形
请问,怎么使用CRectTracker移动/编辑 多个图形? 我用鼠标点上选择后,每个图形单独绘制,所以通过鼠标点击也只能Tracker 到一个图形。 m_tracker.HitTest(point); m_tracker.Track(pWnd, point); m_tracker.m_rect;
vs2019安装目录下缺少include文件夹和lib文件夹,无法配置库函数该怎么办?
想使用easyx画图,但配置库函数的时候发现vc文件夹下没有include、lib文件夹
VC6如何在生成动态链结库的文件(DLL)里调用SQL2000
VC6如何在生成动态链接库的文件(DLL)里调用SQL2000,最终该文件要用于VFP环境内, 也就是要在SET LIBARY TO XX.DLL里调用里的函数,该问题很是急,麻烦大侠们高抬贵 手!
使用VC调用ANSYS执行一个文件用什么函数,具体怎么操作,求大神指点,谢谢
我想用VC调用ANSYS并执行一个文件得到分析结果使其显示在VC用户界面,现在我已经 会用VC把ANSYS打开,但不知道怎么用它调用文件分析,谢谢,我是初学者,谢谢详细 说明,万分感谢!!
为什么system()函数调用setx命令会无限输出?
```#include<cstdlib> #include<windows.h> #include<iostream> using namespace std; int main() { cout<<1<<endl; system("setx MYUSERVAR 1"); cout<<2<<endl; // cin.get(); return 0; } ``` 在VC++6.0的IDE里运行,可以得到正常结果。 但是运行生成的exe文件,却会无限输出1,点击右上角的x还不一定能关掉,会输出^c,再继续输出1
c语言实现英文文本词频统计
c语言结课课程设计,希望有大佬可以指点一下小白 单词词频统计 设计内容: 写程序处理英语文本文件,统计文件中所出现的各单词在文本中出现的频次。 设计功能: 1、 将英文段落以文本文件,并在屏幕上显示。 2、 处理读入的文本文件,提取段落中的英文单词,并且统计各单词出现的次数。 3、 将各单词及其出现频次打印出来,并且将频次为前十的单词的频率用柱状图表示出来。 如果VC6.0环境不能画柱状图的话,就只需要把所有单词的出现频次打出来,再把前十的单词和频率输出就好。 求指电 跪求大佬帮助
如何用VC6编一个联接SQL2000数据库的句柄,并编译成.fll的格式,给VFP9.0调用!
如何用VC6编一个联接SQL2000数据库的句柄,并编译成.fll的格式,给VFP9.0调用,只要求一个简单的实例,大侠高手们,高台贵手一下!
用VC++MFC设计了一个程序,希望直接将程序中的字符串导入网页自动进行搜索,请问怎么实现?
如题:新手设计一个程序,想对程序中的字符串导入百度汉语(https://hanyu.baidu.com/)搜索。 需要打开网页后将内容自动导入唯一的那个输入框,再自动点击搜索。
怎样查看Windows API中sendmessage中参数的消息类型?
** 使用反汇编查看软件代码的时候,会遇到很多sendmessage函数,里面消息类型会定义为形如:0x184u这样的代号** <br /> <br /> ** 以前别人教过我通过vc6.0可以点开一个winuser.h的文件,里面有0x184u和对应消息类型的定义,但是现在我忘了怎么查找这个,求大佬指教??**
用VC调用MATLAB时出现mclInitializeApplication初始化失败怎么解决?
我想在VS2008下建立一个对话框项目,可以调用MATLAB写的函数(版本是MATLAB2010b),函数名称为test_fun。进行步骤如下: 在MATLAB下,键入指令mbuild -setup选择VS2008 SP1的编译器 编译命令为mcc -W lib -T link:lib test_fun.m 在VS2008下新建一个对话框项目,设置如下:工具-设置-VC++目录 include files:D:\PROGRAM FILES\MATLAB\R2010B\EXTERN\INCLUDE library files: D:\PROGRAM FILES\MATLAB\R2010B\EXTERN\LIB\WIN32\MICROSOFT 将MATLAB编译好的文件拷贝到VS项目目录下,在对话框cpp中包含test_fun.h 打开项目属性,在连接器的输入附加项中加上mclcrrt.lib test_fun.lib 在对话框初始化函数中加入 if(!mclInitializeApplication(NULL,0)) //对 matlab 进行初始化 { MessageBox("Could not initialize application!"); return FALSE; } 编译连接通过,但提示该函数初始化失败。请问是什么原因? 希望能得到利用VC调用MATLAB的详细指教!感激不尽啊!
.exe已经触发了一个断点(vc++ mfc)
双击正方形就会弹出这个,结课作业小白已经懵逼,求指导![图片说明](https://img-ask.csdn.net/upload/201912/25/1577284504_403258.png) , ![图片说明](https://img-ask.csdn.net/upload/201912/25/1577284202_569652.png) ![图片说明](https://img-ask.csdn.net/upload/201912/25/1577284229_299609.png)
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch
深深的码丨Java HashMap 透析
HashMap 相关概念 HashTab、HashMap、TreeMap 均以键值对像是存储或操作数据元素。HashTab继承自Dictionary,HashMap、TreeMap继承自AbstractMap,三者均实现Map接口 **HashTab:**同步哈希表,不支持null键或值,因为同步导致性能影响,很少被使用 **HashMap:**应用较多的非同步哈希表,支持null键或值,是键值对...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问

相似问题

2
用VS2015做一个USBCAN的上位机软件,周立功提供的动态链接库有X64和X86的,那么我怎么知道该调用哪个?
2
vc++能否调用包含工具箱函数(比如:feedforwardnet)的神经网络?
0
我用matlab的load 加载vc编辑框中文件路径指向的txt文件,加载不成功。希望各位帮一下,先谢谢了。
2
VS2008 C# winform 64位程序动态调用VC++ 64位DLL LoadLibrary成功 但是GetProcAddress返回值为0
1
不管是devc++,codeblocks都显示和64位windows不兼容,之前还是好的,突然就这样了。
2
安装OPNET前要配置C环境,但VS2015的VC文件下缺lib文件夹怎么解决
1
WinXP 32位系统运行程序提示“无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-|1-1-0.dll”上,如何解决?
1
求助mfc大佬,vc6.0如何使文本编辑框在窗体中居中?
1
这是一个关于VC5.4的问题
0
完全分不清楚二级指针哪里用加*哪里不用了 突发奇想写的登录现在改不懂 用的vc6.0写的也没分开。。 还有些别的错误循环创建文件什么的也是刚在网上看的用的不一定对
1
HALCON是如何做到在一个比图片小的窗口中得到图片每个像素的灰度值的?在VC中实现这样的效果吗?
1
[vc]list在做remove时报错
1
关于easyx图形库下载的一点小问题
1
在VC环境下,使用动态链接库编程
1
VS 2019 C++编译遇到MSB319错误
1
为什么这代码在vc或dev上总是会溢出一组莫名奇妙的数据
0
NS2添加队列管理算法遇到的问题?
2
怎么用VC获取如下txt文档里的字符串
2
qt 很简单的一段代码 利用Qsetting 完成,但是在读取配置文件的时候,出问题
1
VC6,为什么添加文件到目录就崩溃?