Tag: dll

避免蒙特卡罗模拟中的基本rand()偏差?

我正在用C语言重写C中的蒙特卡罗模拟,以便在VBA / Excel的dll中使用。 计算中的“引擎”是创建0到10001之间的随机数,并与5000-7000邻域中的变量进行比较。 每次迭代使用4-800次,我使用100000次迭代。 因此,每次运行大约有50.000.000代随机数。 在Objective C中,测试表明没有偏见,我对C代码有很大的问题。 Objective C是C的超集,因此95%的代码都是复制粘贴,很难搞砸。 我昨天和今天整天经历了很多次,我没有发现任何问题。 我使用srand()留下了arc4random_uniform()和rand()之间的区别,特别是因为偏向0到10000的较低数字。我所进行的测试与.5的偏差是一致的。对于大约5000以下的数字,2%。任何其他解释是我的代码避免重复,我想它不会。 代码非常简单(“spiller1evne”和“spiller2evne”是5500到6500之间的数字): srand((unsigned)time(NULL)); for (j=0;j<antala;++j){ [..] for (i=1;i<450;i++){ chance = (rand() % 10001); [..] if (grey==1) { if (chance < spiller1evnea) vinder = 1; else vinder = 2; } else{ if (chance < spiller2evnea) vinder = 2; else vinder = 1; } 现在我不需要真正的随机性,伪随机性非常好。 我只需要在累积的基础上近似均匀分布(如果5555的可能性是5556的两倍并不重要。如果5500-5599的可能性为5600-5699并且可能性为5如果有明显的0.5-2%偏向0-4000而不是6000-9999。 […]

将c源代码转换为dll

我正在尝试运行使用C编写的代码,这是用于对话板dmv 960A 4T1pci 。 我试图将该代码转换为DLL但我面临的34个错误几乎相同,这里是它们的列表: Linking… Creating library Debug/drivendll.lib and object Debug/drivendll.exp drivendll.obj : error LNK2001: unresolved external symbol _sr_waitevt drivendll.obj : error LNK2001: unresolved external symbol _gc_CCLibStatusEx drivendll.obj : error LNK2001: unresolved external symbol _gc_Start drivendll.obj : error LNK2001: unresolved external symbol _sr_setparm drivendll.obj : error LNK2001: unresolved external symbol _gc_DropCall drivendll.obj : error […]

C源代码为Dll

我需要你的帮助,让我在这里解释一下情况:我有用VC ++ 6.0编写的交流源代码,我需要在我编码的C#应用​​程序中使用该代码,我做了很多事情才能实现,我已经在发布模式下运行该C源文件并生成了intermediate.manifest文件和其他文件,我可以使用这些文件中的任何一个来解决我的问题。 否则请指导我应该尽快做什么? 拉胡尔夏尔马

DLL更新后重建EXE?

我看到主题和微软官方文档( https://docs.microsoft.com/en-us/cpp/build/determining-which-exporting-method-to-use ),说我们在向我们的dll添加导出function之后,我们必须重建DLL(逻辑) 和 EXE。 我不明白他们为什么这么说,经过测试后不是这样,我不需要在我添加函数到dll之后重建我的exe。 我的函数使用__declspec导出,并且有基本的C函数。 他们(链接)建议我们使用带有序数的.def文件来重建,但即使没有这个.def文件,我也不必重建。 __declspec是否也使用序数来链接dll函数或它是否使用函数命名? 你能解释一下他们为什么这么说,我哪里错了? 谢谢

如何让VC 2015生成一个DLL而不仅仅是一个lib文件?

我正在Visual Studio 2015中从源代码构建SDL_pnglite 。我已经完成并添加了对其依赖项(zlib和SDL2)的正确.h和.lib文件的引用,并设置了Configuration Properties-> General-> Project默认值 – >配置类型为DLL。 当我构建时,它成功构建,但它只生成.lib文件而不是.dll。 我错过了什么? 在过去,我曾经需要构建一个.dll就是配置类型设置,但这次它不起作用。

从C ++ / CLI Visual Studio 2010调用使用VS 2005编译的本机C – 无法打开.lib文件…

嗨,我想调用从C dll到C ++ / CLI的函数。 C函数声明为extern。 我按照本教程链接dll: http : //social.msdn.microsoft.com/Forums/en/Vsexpressvc/thread/84deabaa-ae82-47cc-aac0-592f5a8dfa22然后在我的C ++ / CLI dll中我有以下内容: // testWrapper.h #pragma once using namespace System; namespace testWrapper { extern “C” int GtoCalcImpliedVolatility2( double premium, int optionType, double underPrice, double strike, double yearsToExpiry, double yearsToPayment, double volGuess, double discountRate, double dividendRate, double growthRate, double *impliedVol); public ref class MyNamesSplitterClass { […]

从C#调用C DLL方法的正确方法

我试图从第三方DLL执行一些方法(在这种特殊情况下,rdOnAllDone),用C语言编写,然后查看头文件,我发现: #ifndef TDECLSDONE #ifdef STDCALL #define CCON __stdcall #else #define CCON __cdecl #endif #define TDECLSDONE #endif #define DLLIMP __declspec (dllimport) DLLIMP int CCON rdOnAllDone (void(CCON *)(int)); 在调用一种方法来调用这个方法后,我做了这个: [DllImport(“sb6lib.dll”, CallingConvention = CallingConvention.Cdecl)] public static extern int rdOnAllDone(Delegate d); public delegate void rdOnAllDoneCallbackDelegate(); private static void rdOnAllDoneCallback() { Console.WriteLine(“rdOnAllDoneCallback invoked”); } 除了我无法获取int参数之外,该方法被正确调用。 所以我尝试像这样添加输入参数int [DllImport(“sb6lib.dll”, CallingConvention = CallingConvention.Cdecl)] […]

在Visual Studio中制作适合由Mozilla中的js-ctypes使用的C DLL

正如主题所说,我正在尝试做的与使用Visual Studio 2012相似。 我可以构建和生成DLL,我可以在javascript中加载该DLL,但我无法访问该DLL中的函数。 查看DllExp中的DLL显示没有函数,表明DLL有问题。 DLL是使用“Empty Project”模板创建的新C ++项目。 显着的设置是; 常规 – >配置类型设置为DLL 没有优化。 没有预编译的头文件。 编译为C代码 调用约定__cdecl 用于编译和链接的命令行,如果有一个我认为不重要的设置,则是 /GS /TC /analyze- /W3 /Zc:wchar_t /ZI /Gm /Od /sdl /Fd”Debug\vc110.pdb” /fp:precise /D “_WINDLL” /D “_MBCS” /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa”Debug\” /EHsc /nologo /Fo”Debug\” /Fp”Debug\StreamInterop.pch” 对于链接器 /OUT:”C:\Work\VehicleTracker-DotNet\StreamInterop\Debug\StreamInterop.dll” /MANIFEST /NXCOMPAT /PDB:”C:\Work\VehicleTracker-DotNet\StreamInterop\Debug\StreamInterop.pdb” /DYNAMICBASE “kernel32.lib” “user32.lib” “gdi32.lib” “winspool.lib” “comdlg32.lib” […]

使用declspec宏为一个函数的C2059语法错误; 没有它就编好了

我正在创建一个共享库(跨平台),但在尝试编译Windows版本时,我遇到了错误: secure_string.h(43):错误C2059:语法错误:’type’ 这与SECURESTRING_API宏有关。 它没有抱怨strlcpy和strlcat中的两个用法,但是当试图将它用于’str_from_last’时它会产生上述错误。 如果我删除它,它编译得很好,但该函数然后不从DLL导出,使其无用! 谷歌搜索没有产生(相关)结果; 有没有人遇到过这个? 我已经在Visual Studio 2008和2010上进行了测试,结果是相同的。 源文件包括string.h ,然后是这个文件 – 没有别的。 头文件: #ifndef SECURE_STRING_H #define SECURE_STRING_H /* Provide MS Builds with import/export functionality * BUILD_SECURE_STRING should be added to project preprocessor macros */ #if _WIN32 # if defined(BUILD_SECURE_STRING) # define SECURESTRING_API __declspec(dllexport) # else # define SECURESTRING_API __declspec(dllimport) # endif #else # […]

链接到Pelles C中的DLL

我有一个218KB .dll和一个596KB .so文件,两个名字相同。 我想链接到.dll以避免链接器返回的“未解析的外部符号”错误,但我找不到链接到DLL文件的方法。 根据Pelles C论坛主题 ,我需要使用.def文件来创建.lib …但是我没有.def文件。 这个论坛主题展示了如何使用polink创建.lib ,所以我运行了polink /? 获得更多选择。 我注意到了一个/MAKEDEF选项,但是使用.dll和.so运行它会给出“没有指定库文件”的致命错误。 我一直试图这样做三个小时,而且我没有想法。 我已经到了我的网络搜索发出我自己的帮助请求的程度。 必须有办法做到这一点……我怎样才能链接到.dll ?