小编jxr*_*mos的帖子

导入库如何工作?细节?

我知道这对极客来说似乎很基础.但我想说清楚.

当我想使用Win32 DLL时,通常我只需要调用像LoadLibrary()和GetProcAdderss()这样的API.但最近,我正在使用DirectX9进行开发,我需要添加d3d9.lib,d3dx9.lib等文件.

我听说LIB用于静态链接,DLL用于动态链接.

所以我目前的理解是LIB包含方法的实现,并在链接时静态链接作为最终EXE文件的一部分.虽然DLL在运行时动态加载,但不是最终EXE文件的一部分.

但有时候,DLL文件会附带一些LIB 文件,因此:

  • 这些LIB文件是什么?
  • 他们如何实现他们的意图?
  • 有没有工具可以让我检查这些LIB文件的内部?

更新1

检查维基百科后,我记得这些LIB文件称为导入库.但我想知道它如何与我的主应用程序和动态加载的DLL一起工作.

更新2

正如RBerteig所说,LIB文件中存在一些与DLL一起出现的存根代码.所以调用序列应该是这样的:

我的主要应用 - > LIB中的stub - >真正的目标DLL

那么这些LIB应包含哪些信息?我能想到以下几点:

  • LIB文件应包含相应DLL的完整路径; 因此DLL可以由运行时加载.
  • 每个DLL导出方法的入口点的相对地址(或文件偏移量?)应该在存根中编码; 因此可以进行正确的跳转/方法调用.

我对吗?还有什么吗?

顺便说一句:有没有可以检查导入库的工具?如果我能看到它,就不会再有疑惑了.

c c++ windows visual-c++

76
推荐指数
2
解决办法
3万
查看次数

什么是TCP连接中的"积压"?

下面,您将看到一个python程序,它充当侦听端口9999的连接请求的服务器:

# server.py 
import socket                                         
import time

# create a socket object
serversocket = socket.socket(
            socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name
host = socket.gethostname()                           

port = 9999                                           

# bind to the port
serversocket.bind((host, port))                                  

# queue up to 5 requests
serversocket.listen(5)                                           

while True:
    # establish a connection
    clientsocket,addr = serversocket.accept()      

    print("Got a connection from %s" % str(addr))
    currentTime = time.ctime(time.time()) + "\r\n"
    clientsocket.send(currentTime.encode('ascii'))
    clientsocket.close()
Run Code Online (Sandbox Code Playgroud)

问题是socket.listen()方法参数(即5)的功能是什么.

基于互联网上的教程:

backlog参数指定排队连接的最大数量,并且应该至少为0; 最大值取决于系统(通常为5),最小值强制为0.

但:

  1. 这些排队连接是什么?
  2. 是否对客户请求进行了任何更改?(我的意思是运行 …

python sockets udp network-programming tcp

25
推荐指数
3
解决办法
2万
查看次数

如何使用saveas()将MATLAB图保存为JPEG,而不会使图像严重脱落?

在我写的MATLAB函数中,我正在生成一个数字.执行该功能时会显示该图.我需要将图形保存为JPEG图像.为此,我可以在显示图形的图形窗口中执行File-> Save As.但我想自动化这个.我试过使用saveas()函数来做到这一点.问题是产生的图像是不合需要的.以下是演示问题的图像,向您展示我的意思:

在MATLAB图形窗口中使用File-> Save As手动保存JPEG图像: 手动文件另存为jpg渲染

JPEG图像使用saveas()函数保存(注意图形不太好,标题重叠): saveas jpg渲染

这是MATLAB函数,我在其中生成图形并使用saveas()将图形保存为JPEG:

function JpgSaveIssueDemo( )
    figure( 1 );
    t = 0:0.1:8;    

    subplot( 2, 2, 1 );    
    plot( t, sin(t) );
    title( 'Plot 1 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );

    subplot( 2, 2, 2 );
    plot( t, sin(t) );
    title( 'Plot 2 of Example to Demonstrate JPG Save Issue', 'FontSize', 18 );

    subplot( 2, 2, 3 );
    plot( t, sin(t) );
    title( 'Plot 3 of Example to Demonstrate JPG Save Issue', …
Run Code Online (Sandbox Code Playgroud)

matlab matlab-figure

23
推荐指数
1
解决办法
6万
查看次数

Anaconda与现有Python安装之间的系统Python冲突

我一直在使用一个基本的Python3.4安装,我在过去一个月里已经安装了很多模块,但是已经达到了pip即将到来的地步,我将在我的上安装完整的Anaconda系统深入到散景服务器的东西.

我在Windows 64bit安装程序(Anaconda3-2.3.0-Windows-x86_64.exe)中弹出一个弹出窗口

Python 3.4(64位)的一个版本已经在C:\ Python34 \我们建议如果您希望Anaconda注册为您的系统Python,则首先取消注册此Python.如果您确实知道这是您想要的,请单击"确定",否则单击"取消"继续. 在此输入图像描述

没有找到关于这个主题的大量文档,我不确定如何"取消注册"Python的安装,除了完全从Windows卸载它,我想这会完成这样的事情.这基本上告诉我在Anaconda安装后检查我的Python Launcher for Windows是如何设置的?我对python系统注册这个概念完全不熟悉?这只是关于哪个python版本优先于系统路径或哪个安装保存文件关联的警告?

python install anaconda python-3.4

15
推荐指数
2
解决办法
2万
查看次数

Python 区域折叠语法

我知道 python 不正式支持任何内置的区域代码折叠语法。我确实知道有一些语法存在于野外,它们的约定与特定编辑器和特定注释对相关。

我知道使用关键字的VS Code识别的 python 源代码折叠语法#region

#region MY_CODE_REGION
...
#endregion
Run Code Online (Sandbox Code Playgroud)

我遇到了另一个我不认识的来自某个来源的

https://github.com/gitpython-developers/GitPython/blob/master/git/objects/tree.py#L96-L104

其中使用了以下语法

#{ MY_CODE_REGION
#} END MY_CODE_REGION
Run Code Online (Sandbox Code Playgroud)

python 还存在哪些其他编辑器语法?是否有关于该主题的待处理 PEP?

python code-folding

12
推荐指数
1
解决办法
3155
查看次数

龙卷风中的并发性是否可行?

我知道tornado是一个单线程和非阻塞服务器,因此请求按顺序处理(除非使用事件驱动方法进行IO操作).

有没有办法在龙卷风中并行处理多个请求以进行正常(非IO)执行.我不能分叉多个进程,因为我需要跨请求的公共内存空间.

如果不可能,请向我建议其他可以处理并行请求的python服务器,并且还支持wsgi.

python concurrency wsgi tornado

11
推荐指数
2
解决办法
5081
查看次数

在 Beyond Compare 中比较 Json 文件

如何在 Beyond Compare 中比较两个缩小的 json 文件?是否有内置的 json 文件格式?我正在寻找比较底层 json 对象的两个漂亮的打印表示。

diff beyondcompare

11
推荐指数
2
解决办法
9553
查看次数

Xcode 8 - os_log_debug和os_log_info日志不会显示在新的Mac控制台上(统一日志记录)

我正在尝试Xcode 8和Objective-C中的新统一记录.它工作正常,但它似乎是类型的日志,debuginfo没有显示在新的Mac控制台上.其他日志类型(error,fault,default)都正确显示.

在Xcode 8上我有:

os_log_t logObject = os_log_create("com.myapps", "testing log");
os_log(logObject, "Default log message."); // Captured and shown correctly
os_log_info(logObject, "Info log message."); // Not shown on Console app
os_log_debug(logObject, "Debug log message.");  // Not shown on Console app
os_log_error(logObject, "Error log message.");  // Captured and shown correctly
os_log_fault(logObject, "Fault log message.");  // Captured and shown correctly
Run Code Online (Sandbox Code Playgroud)

在我发布的终端上:

sudo log config --mode "persist:debug,level:debug" --subsystem com.myapps
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

屏幕截图登录Mac控制台

关于我缺少什么的任何想法?

注意:我的问题如何被认为是重复的,因为它是在@algal之前至少7个月被问到的?

terminal console xcode logging objective-c

10
推荐指数
1
解决办法
2687
查看次数

为什么 Flask 会话的值必须是 JSON 可序列化的?

我正在尝试为 Flask 应用程序中的用户会话实例化一个基本模型实例。我对我的类是 JSON 可序列化的要求感到措手不及。我认为会话字典只是一个存储会话信息的任意构造,但听起来它的使用有更多限制,其中之一显然是值是 JSON 可序列化的。还有哪些其他约束,这个 JSON 约束的目的究竟是什么?Web 应用程序是否很难期望通过 JSON 保留其用户会话?这个要求来自哪里/受到哪里启发?

@app.route( '/' , methods=['GET', 'POST'] )
def index():
    """index  takes user to the home page of the application.
    """

    # Create model instance for this user session
    if 'model' not in session :
        session['model'] = Model( )


File "C:\Anaconda3\lib\site-packages\flask\json.py", line 83, in default
return _json.JSONEncoder.default(self, o)
File "C:\Anaconda3\lib\json\encoder.py", line 173, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <Model.Model object at 0x000000000770B6D8> is not JSON …
Run Code Online (Sandbox Code Playgroud)

flask

10
推荐指数
1
解决办法
4783
查看次数

Python 2to3在函数参数周围添加了额外的括号

我有点困惑,为什么2to3要麻烦拥抱我已经采用功能样式的打印参数,将其包装在一组额外的括号中。例如

print("\t[Warn] Can not connect {}".format(ssid))
Run Code Online (Sandbox Code Playgroud)

变成

print(("\t[Warn] Can not connect {}".format(ssid)))
Run Code Online (Sandbox Code Playgroud)

这些本质上是保守的假阳性吗?我在想,也许)format函数的尾部抛出了它的逻辑。

python python-2to3

8
推荐指数
1
解决办法
173
查看次数