我正在使用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读取而失败了.
在模块中,B
我有一个带有链接的文档'A.foo'
,链接到foo
模块的成员A
.在模块A
I中导入模块B
.黑线鳕呈现此作为链接A.html#t:foo
,即在指向型 foo
(其不存在的话)不是函数foo
,其在A.html#v:foo
.
t:
以小写字母开头的变量?那是一个错误吗?因为'A.Foo'
我可以看到它可能是一个类型或构造函数,因此存在命名空间问题.因为foo
似乎变量至少是最合理的.foo
.我尝试了锚点,但它们呈现为模块名称,对于直接超链接,您无法控制显示的文本.t:[a-z]
为v:
),但这需要一个自定义的Setup.hs,它会导致问题并且非常难看.foo
是一个变量.A
在B
不引入循环导入的情况下添加导入,这纯粹是为文档添加.我在Shake文档removeFilesAfter
中遇到了这个问题,其中一个例子没有得到正确的链接.
我正在尝试将现有的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) 我有一个Windows套接字程序(XP及更高版本),该程序可以调用WSAStartup
。WSACleanup
在程序退出之前是否需要调用?如果我不这样做,会不会有负面影响?特别是:
WSACleanup();
exit(0);
Run Code Online (Sandbox Code Playgroud)
不同于仅仅exit(0)
。我意识到在Win16 WSACleanup
上仍然会泄漏系统资源。
要查找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
克隆的速度和减少的网络流量,但是还获得了提交数量的计数?
给定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#中?
鉴于以下计划,使用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上放一些东西.
给定一个 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_pgid
with ,在父进程中调用with 。为什么这种变化会导致挂起?这是 Docker 中的错误吗?System.Process 中的错误?还是不幸但必要的互动?0
pid
我想编写一个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 -
似乎不允许同时传递参数。有什么办法可以避免使用临时文件?
我想编写一个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
.
我正在尝试将一些代码从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#写这个项目将不得不重新考虑.
我想用的temporary
封装与震动,但是这需要Action
有一个实例MonadMask
,这是失踪.为什么Shake没有提供这样的实例?
我编写了一个生成元组列表的DAML模型,例如[(Int, Text)]
.我通过DA Ledger API接收这些数据 - 如何将其转换为List<Pair<Long, String>>
Java?
haskell ×5
f# ×2
c#-to-f# ×1
daml ×1
docker ×1
ghc ×1
git ×1
haddock ×1
makefile ×1
powershell ×1
process ×1
windows ×1
winsock2 ×1
wsacleanup ×1
wsastartup ×1