标签: dll

关于为什么windows'.dll不适用于linux的细节

我很好奇能够在Linux编译的C++代码中使用Windows中编译的最原始的DLL库.让我们假设库的问题不是滔天专有的东西从Windows核心;

...只有一个与假的API一样(这里是标题和实现):

// MathFuncsDll.h

namespace MathFuncs
{
    class MyMathFuncs
    {
    public:
        // Returns a + b
        static __declspec(dllexport) double Add(double a, double b);

        // Returns a - b
        static __declspec(dllexport) double Subtract(double a, double b);
    };
}


// MathFuncsDll.cpp

#include "MathFuncsDll.h"

using namespace std;

namespace MathFuncs
{
    double MyMathFuncs::Add(double a, double b)
    {
        return a + b;
    }

    double MyMathFuncs::Subtract(double a, double b)
    {
        return a - b;
    }
}
Run Code Online (Sandbox Code Playgroud)

除了<iostream>之外,这个库没有依赖项,不是吗?

Linux编译的.cpp将包含以下内容:

// MyExecRefsDll.cpp
// compile with: /EHsc …
Run Code Online (Sandbox Code Playgroud)

c++ linux windows dll shared-libraries

0
推荐指数
1
解决办法
321
查看次数

如何在Visual Studio Express 2012中将源代码添加到.dll文件?

我有一个第三方.dll文件及其源代码(用C#编写).我可以创建一个新项目并添加此.dll文件的引用以使用其方法.但是当我调试时,我想介入.dll文件中定义的方法(就像我们在java中有.jar文件及其源代码时那样).

我如何在Visual Studio Express中执行此操作(我有VS 2012).

c# debugging dll visual-studio

0
推荐指数
1
解决办法
1775
查看次数

结合rand()和srand()以获得更好的性能

所以,我正在制作一个我希望有一个函数来生成随机数的DLL.我想知道哪些选项更有效(性能明智).

这个只是在DLL中创建一个函数,允许我得到一个随机数.

int getRand(unsigned int seed) {
    int rNum;  // Random Number.

    srand(seed);
    rNum = (rand() % // Whatever I need here.
}
Run Code Online (Sandbox Code Playgroud)

或者,只是使用srand(time(nullptr))rand()在应用程序中性能更好?

谢谢,

约翰尼P.

c++ random dll performance visual-c++

0
推荐指数
1
解决办法
1281
查看次数

使用qt制作C++库

我用qt creator构建了一个C++库.qt在debug文件夹3文件中为我构建:

'1. libSerialize.a' and '2. Serialize.dll' and 'serialize.o' .
Run Code Online (Sandbox Code Playgroud)

现在我想将这个库添加到另一个qt项目中.我怎样才能做到这一点?.我怎么能包括那个图书馆?.我应该在哪里复制那些?.哪一个是必要的?.这是我的.pro档案:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = get_send_array
TEMPLATE = app


SOURCES += main.cpp\
        widget.cpp \
    student.cpp

HEADERS  += widget.h \
    student.h
Run Code Online (Sandbox Code Playgroud)

谢谢,请帮助我.

c++ dll qt

0
推荐指数
1
解决办法
1023
查看次数

断言:指针必须来自'本地'堆

我正在测试一个名为clunk的小型声音库(http://sourceforge.net/projects/clunk/).我为visual studio 11构建了该库,并将其链接到我的visual studio项目中.当我尝试test.cpp时,我收到了msvcr110d.dll抛出的断言.

是否与我的运行时库设置有关:它是" 多线程调试DLL(/ MDd) "?在clunk的cmakelist.txt中,我添加了以下代码行:

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
Run Code Online (Sandbox Code Playgroud)

我仍然收到指针分配问题的消息.为什么?

c++ dll memory-management assertion

0
推荐指数
1
解决办法
1486
查看次数

与DLL混淆.没有.lib或.h

我目前有一个使用32位dll的C#项目.我想要做的是在C++项目中使用dll,遗憾的是项目中引用的dll没有.h或.lib文件,所以我对如何访问dll中的类或使用我感到困惑我在C++项目中的DLL文件(Visual Studio 2010).我在这里读到,如果一个dll文件包含类,它很可能是一个COM组件.有关我应该查看的内容的任何建议,以便集成和使用该DLL中的方法和对象.

更新:

我通过执行import语句检查它是否是COM.但是我得到了"找不到.tlb文件".然后我决定使用依赖walker检查任何导出的方法(对象)似乎没有.我点击了主文件(已突出显示),但看不到任何导出的功能.我应该检查下一步的任何提示?这是我从依赖walker得到的. 在此输入图像描述

c++ com dll

0
推荐指数
1
解决办法
252
查看次数

C++中未解析的外部:Visual C++中的方法签名与dll中的损坏方法不同

我正在使用Visual Studio 2012,托管C++,在第三方SDK和我们用C#编写的系统之间建立桥梁.我成功地包装并使用了SDK中的几个函数.除了一个,只会导致未解决的外部错误.

SDK的头文件定义了函数的签名:

#if defined WIN32
    #if defined BUILD_ADS_SHARED_LIB
        #define ADS_LINK_SPEC __declspec (dllexport)
        #define ADS_CALLING_CONVENTION __stdcall
    #elif defined USE_ADS_SHARED_LIB
        #define ADS_LINK_SPEC __declspec (dllimport)
        #define ADS_CALLING_CONVENTION __stdcall
    #else
        #define ADS_LINK_SPEC
        #define ADS_CALLING_CONVENTION
    #endif
#else
    #define ADS_LINK_SPEC
    #define ADS_CALLING_CONVENTION
#endif

DatabaseResult ADS_LINK_SPEC ADS_CALLING_CONVENTION
createDatabase(
    const Settings& settings, Artec::SdkDatabase::iDatabase *& instance);
Run Code Online (Sandbox Code Playgroud)

错误说:

Error   10  error LNK2028: unresolved token (0A000089) "enum Artec::SdkDatabase::DatabaseResult __cdecl Artec::SdkDatabase::createDatabase(class Artec::SdkDatabase::Settings const &,class Artec::SdkDatabase::iDatabase * &)" (?createDatabase@SdkDatabase@Artec@@$$FYA?AW4DatabaseResult@12@ABVSettings@12@AAPAViDatabase@12@@Z) referenced in function "private: static enum Artec::SdkDatabase::DatabaseResult __clrcall Broadway3dWrapper::Broadway3dWrapper::GetConn(wchar_t const *,wchar_t const …
Run Code Online (Sandbox Code Playgroud)

c++ dll dynamic-linking visual-c++ visual-studio-2012

0
推荐指数
1
解决办法
1105
查看次数

使用VC++生成*.dll后*.lib在哪里?

我用VC++生成了一个*.dll.当我想使用它时,需要*.lib.但我找不到它.如何获得*.lib?谢谢.

c++ dll

0
推荐指数
1
解决办法
238
查看次数

如何在c#中使用没有源代码的c ++库?

好吧,我有一个用C++编写的库,我没有源代码,我只有3个文件:

带扩展名的MFSSDM:dll,h和lib.

我想在Visual C#的项目中使用它(Visual Studio 2010或2012)

这可能是最快的方式吗?

rubenc

c# c++ dll

0
推荐指数
1
解决办法
124
查看次数

将char*中的垃圾数据用作函数中的缓冲区

我正在用c ++加载一个delphi dll.当我使用char*作为缓冲区的函数(char*作为过程的参数给出)时,我只得到垃圾数据.当我有返回char*的函数时,一切都很好.

我是c ++的新手,我花了很多时间试图解决这个问题.请帮忙.

一切都在下面的代码中解释.我已经有3个功能来展示我的意思.

缓冲区有问题的示例函数是:DLL_PingConnection(var avXml:PChar):Boolean; - 它返回true/false,作为参数,它需要缓冲区并且函数在缓冲区中完成,应该有有效的xml(但只有垃圾)

#include <windows.h> //this will load delphi dll
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>

using namespace std;

// ------------------------------------------------ pointers on functions inside Delphi DLL (32 bits)
typedef bool(*TYPE_DLL_SetLicense)(char*, char*); //initialize dll stuff - I load licence from a file into char* - everything works fine
typedef bool(*TYPE_DLL_PingConnection)(char*); //the char* is buffer - I give empty char* as parameter and I should get correct xml with serwer data - …
Run Code Online (Sandbox Code Playgroud)

c++ arrays delphi dll char

0
推荐指数
1
解决办法
865
查看次数