小编Nei*_*ell的帖子

使用Visual Studio构建.dll时停止创建.lib和.exp

我正在使用Visual Studio工具集(2008)构建.dll.当我做链接步骤时:

link -nologo -OUT:Foo.dll Foo.obj -DLL -IMPLIB:None.lib
Run Code Online (Sandbox Code Playgroud)

这将创建None.lib和None.exp.它还会显示以下消息:

Creating library None.lib and object None.exp
Run Code Online (Sandbox Code Playgroud)

我想抑制这两个文件的创建,以及相关的消息.该消息令人讨厌,并且很难在构建日志中看到更多有用的消息.文件不是特别大,但确实有助于硬盘驱动器流量和文件碎片.

我试过寻找可以传递链接的标志,没有任何运气.我也试过设置-IMPLIB:nul,但是因为它首先尝试从nul.exp读取而失败了.

visual-studio-2008

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

Haddock链接到非导入模块中的函数

在模块中,B我有一个带有链接的文档'A.foo',链接到foo模块的成员A.在模块AI中导入模块B.黑线鳕呈现此作为链接A.html#t:foo,即在指向 foo(其不存在的话)不是函数foo,其在A.html#v:foo.

  • 为什么Haddock链接到t:以小写字母开头的变量?那是一个错误吗?因为'A.Foo'我可以看到它可能是一个类型或构造函数,因此存在命名空间问题.因为foo似乎变量至少是最合理的.
  • 有没有办法假冒链接?我在代码示例中写这个,所以我需要将它呈现为foo.我尝试了锚点,但它们呈现为模块名称,对于直接超链接,您无法控制显示的文本.
  • 我考虑过一个后处理器(替换t:[a-z]v:),但这需要一个自定义的Setup.hs,它会导致问题并且非常难看.
  • 我找不到任何Haddock命令行标志来获得更合理的行为,例如指定它foo是一个变量.
  • 我不能AB不引入循环导入的情况下添加导入,这纯粹是为文档添加.

我在Shake文档removeFilesAfter中遇到了这个问题,其中一个例子没有得到正确的链接.

haskell haddock

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

如何使用Shake执行sh命令

我正在尝试将现有的makefile迁移到Shake,到目前为止我已尝试过以下内容(只需创建一个包含目录内容的文件)

module Main where
import Development.Shake

main :: IO ()
main = shakeArgs shakeOptions{shakeFiles="_build"} $ do
    let ls = "_build/ls.txt"
    want [ls]
    ls *> \out ->  do
        cmd "ls >  " out
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到以下错误消息:

> runghc test.hs _build/ls.txt
# ls (for _build/ls.txt)
ls: >: No such file or directory
ls: _build/ls.txt: No such file or directory
Error when running Shake build system:
* _build/ls.txt
Development.Shake.cmd, system command failed
Command: ls > _build/ls.txt
Exit code: 1
Stderr:
ls: >: No such file …
Run Code Online (Sandbox Code Playgroud)

haskell shake-build-system

5
推荐指数
1
解决办法
437
查看次数

程序退出前是否需要调用WSACleanup

我有一个Windows套接字程序(XP及更高版本),该程序可以调用WSAStartupWSACleanup在程序退出之前是否需要调用?如果我不这样做,会不会有负面影响?特别是:

WSACleanup();
exit(0);
Run Code Online (Sandbox Code Playgroud)

不同于仅仅exit(0)。我意识到在Win16 WSACleanup上仍然会泄漏系统资源。

windows winsock2 wsastartup wsacleanup

5
推荐指数
0
解决办法
609
查看次数

使用--depth = 1克隆时,查找Git仓库中的提交数量

要查找git分支上的提交数量,您可以执行以下操作:

$ git rev-list --count HEAD
920
Run Code Online (Sandbox Code Playgroud)

但是,如果您最初使用克隆--depth=1,则不起作用:

$ git clone https://github.com/ndmitchell/hoogle.git --depth=1
$ cd hoogle
$ git rev-list --count HEAD
1
Run Code Online (Sandbox Code Playgroud)

有没有办法获得--depth=1克隆的速度和减少的网络流量,但是还获得了提交数量的计数?

git

5
推荐指数
1
解决办法
527
查看次数

从C#调用F#对象的接口方法

给定F#类型:

type Foo() =
    member this.Prop with get() = ()

    interface IDisposable with
        member this.Dispose() = ()
Run Code Online (Sandbox Code Playgroud)

在C#中,我创建了对象,但我无法调用Dispose():

var x = new Foo();
x.Dispose(); // compile error, x does not contain a definition of Dispose
Run Code Online (Sandbox Code Playgroud)

但是,我可以写:

((IDisposable)x).Dispose(); // works, but I don't like the cast
Run Code Online (Sandbox Code Playgroud)

有没有办法避免C#中的强制转换?这是关系到道路F#并不会自动让你叫.Dispose()Foo类型从F#中?

f# c#-to-f#

4
推荐指数
1
解决办法
746
查看次数

如何检测setNumCapabilities是否有效

鉴于以下计划,使用GHC 7.6:

import Control.Concurrent
main = do
    setNumCapabilities 8
    putStrLn "After"
Run Code Online (Sandbox Code Playgroud)

如果我构建ghc --make并运行我得到:

main: setNumCapabilities: not supported in the non-threaded RTS
After
Run Code Online (Sandbox Code Playgroud)

关于非线程RTS的警告是因为我没有构建-threaded.我想修改此代码,以便即使它不起作用也不会打印任何内容.例如,如果我能检测到RTS是非线程的,那么我可以避免使用setNumCapabilities.我不想在调用程序的stdout上放一些东西.

haskell ghc

4
推荐指数
1
解决办法
144
查看次数

启动 Docker 时使用 {create_group=True} / set_pgid 生成进程挂起

给定一个 Linux 系统,在 Haskell GHCi 8.8.3 中,我可以使用以下命令运行 Docker 命令:

System.Process> withCreateProcess (shell "docker run -it alpine sh -c \"echo hello\""){create_group=False} $ \_ _ _ pid -> waitForProcess pid
hello
ExitSuccess
Run Code Online (Sandbox Code Playgroud)

但是,当我切换到create_group=True进程挂起时。的效果create_group在子进程中调用set_pgidwith ,在父进程中调用with 。为什么这种变化会导致挂起?这是 Docker 中的错误吗?System.Process 中的错误?还是不幸但必要的互动?0pid

haskell process process-group docker

4
推荐指数
1
解决办法
339
查看次数

从没有临时文件的URL运行Powershell脚本

我想编写一个PowerShell脚本,该脚本运行存储在URL上的PowerShell脚本,传递自定义参数并转发给此PowerShell的所有参数。具体来说,我可以这样做:

$VAR=Invoke-WebRequest http://example.com/powershell.ps1
$TEMP=New-TemporaryFile
$FILE=$TEMP.FullName + ".ps1"
$VAR.Content | Out-File $FILE
& $FILE somearguments $args
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望在不使用临时文件的情况下执行此操作,但是powershell -content -似乎不允许同时传递参数。有什么办法可以避免使用临时文件?

powershell

3
推荐指数
3
解决办法
6374
查看次数

使用文件中的依赖项进行创建

我想编写一个Makefile来读取文件list.txt并生成result.tar包含内容的文件.如果list.txt文件或其指向的任何文件发生更改,result.tar则应重建.我怎样才能在Makefile中表达这个?我最接近的是:

result.tar : list.txt
   cat list.txt | xargs tar -cf result.tar
Run Code Online (Sandbox Code Playgroud)

但这省略了对内容的依赖list.txt.

makefile

2
推荐指数
1
解决办法
796
查看次数

F#中的ComImport

我正在尝试将一些代码从C#转换为F#,特别是创建快捷方式的代码,从这里:http://vbaccelerator.com/home/NET/Code/Libraries/Shell_Projects/Creating_and_Modifying_Shortcuts/ShellLink_Code_zip_ShellLink/ShellLink_cs.asp

C#中的代码读取:

[GuidAttribute("00021401-0000-0000-C000-000000000046")]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComImportAttribute()]
private class CShellLink{}
Run Code Online (Sandbox Code Playgroud)

我将其翻译为F#:

[<GuidAttribute("00021401-0000-0000-C000-000000000046")>]
[<ClassInterfaceAttribute(ClassInterfaceType.None)>]
[<ComImportAttribute()>]
type CShellLink() = class end
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我切换到F#实现时,我得到一个运行时错误:"导入中具有非零RVA的方法".这似乎与此处报告的错误相同:http://social.msdn.microsoft.com/Forums/en-US/fsharpgeneral/thread/dada2004-5218-4089-8918-eed2464bbbcd

有没有解决方法?我正在尝试将应用程序移植到仅使用F#,所以如果不能用F#写这个项目将不得不重新考虑.

f#

2
推荐指数
1
解决办法
397
查看次数

为什么Shake没有为Action提供MonadMask实例?

我想用的temporary封装震动,但是这需要Action有一个实例MonadMask,这是失踪.为什么Shake没有提供这样的实例?

haskell shake-build-system

2
推荐指数
1
解决办法
129
查看次数

如何将通过DA Ledger API接收的DAML元组转换为Java对?

我编写了一个生成元组列表的DAML模型,例如[(Int, Text)].我通过DA Ledger API接收这些数据 - 如何将其转换为List<Pair<Long, String>>Java?

daml

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